V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awanganddong
V2EX  ›  Lua

skynet 怎么给 mysql drive 增加对 caching_sha2_password 的支持

  •  
  •   awanganddong · 7 小时 28 分钟前 · 166 次点击

    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 来的,但是不对。请教下大家。
    
    1 条回复    2025-03-10 17:14:03 +08:00
    cj0326
        1
    cj0326  
       7 小时 8 分钟前
    蹲一个回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:22 · PVG 00:22 · LAX 09:22 · JFK 12:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.