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 来的,但是不对。请教下大家。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.