mysql 用的是 8.0 。插件是 caching_sha2_password

skynet 默认扩展不支持这种模式。 所以想请教下这种怎么改写。 也看了 https://github.com/openresty/lua-resty-mysql 源码。还是一脑袋浆糊。

        if auth_plugin == "caching_sha2_password" then
            token = _compute_caching_sha2_password_token(password, scramble)
        else
            token = _compute_token(password, scramble)
        end
        local client_flags = 260047
        local req = strpack("<I4I4c1c23zs1z",
                client_flags,
                self._max_packet_size,
                strchar(charset),
                strrep("\0", 23),
                user,
                token,
                database
        )
        local authpacket = _compose_packet(self, req)
        sockchannel:request(authpacket, dispatch_resp)
        if on_connect then
            on_connect(self)
        end
        
        
        
        function _compute_caching_sha2_password_token(password, scramble)
    -- 1. Compute SHA-256 hash of the password
    local password_hash = sha.sha256(password)

    -- 2. Concatenate the hash with the scramble

    local combined = sha.sha256(sha.sha256(password_hash .. scramble))

    local token = xor(password_hash, combined)
    -- 3. Compute SHA-256 hash of the combined value
    return token
end

下边是我检索 chatgpt 来的,但是不对。请教下大家。
举报· 208 次点击
登录 注册 站外分享
1 条回复  
cj0326 初学 2025-3-10 17:14:03
蹲一个回复
返回顶部