0

我正在使用 vernemq 使用 SHA256 算法从数据库中授权用户。我观察到使用内置 mqsql 函数在表中创建新条目时SHA2

INSERT INTO vmq_auth_acl 
    (mountpoint, client_id, username, 
     password, publish_acl, subscribe_acl)
SELECT 
    '', 'newUser2', 'newUser2', SHA2("CJJPL9", 256), 
     '[{"pattern":"botOut"}] ', 
     '[{"pattern":"botIn/#"}]';

它会生成类似这样的哈希值,54d0e30d0a00d86451a3353a2123fc1f006faaba6b55ef0d168390f26cbab82a并且 Vernemq 服务器在使用CJJPL9密码登录时成功验证了该用户。

但是,当我使用 passlib 库从 python 代码中将此条目添加到此表中时sha256_crypt.encrypt("CJJPL9"),它会生成如下哈希 $5$rounds=80000$wnsT7Yr92oJoP28r$cKhJImk5mfuSKV9b3mumNzlbstFUplKtQXXMo4G6Ep5。我知道,由于 salt,哈希值会有所不同,但是两种哈希值的格式存在明显差异,因此,verneMQ 服务器无法验证该用户的凭据。passlib 库的格式表明它只保留 256 位校验和的 43 个字符。我还尝试通过仅保留 passlib 哈希字符串的校验和部分来进行测试,但仍然没有运气。

我想知道 MySQLSAH2("CJJPL9", 256)sha256_crypt.encrypt("CJJPL9").

4

0 回答 0