Я использую vernemq для авторизации пользователей из базы данных с использованием алгоритма SHA256.Я замечаю, что при создании новой записи в таблице с помощью функции buildin 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
пароль.
Но когда я добавляю эту запись в эту таблицу из кода Python, используя библиотеку passlib sha256_crypt.encrypt("CJJPL9")
, которая генерирует хэш следующим образом $5$rounds=80000$wnsT7Yr92oJoP28r$cKhJImk5mfuSKV9b3mumNzlbstFUplKtQXXMo4G6Ep5
.Я знаю, что из-за соли хэши будут отличаться, но есть четкое различие в форматировании обоих хэшей, и в результате сервер verneMQ не может проверить учетные данные для этого пользователя. форматирование библиотеки passlib говорит, что она хранит только 43 символа из 256-битной контрольной суммы.Я также попытался протестировать, сохранив только часть контрольной суммы строки хеша passlib, но все равно не повезло.
Я хочу знать, в чем разница между шифрованием MySQL SAH2("CJJPL9", 256)
и sha256_crypt.encrypt("CJJPL9")
.