MySQL 8 SHA2 против Dovecot SHA256-CRYPT - PullRequest
1 голос
/ 22 января 2020

обновление : похоже, что то, что я наивно пытаюсь сделать здесь, вручную добавить соль к паролю, не будет работать из-за способа работы алгоритма шифрования (см. Unix crypt с использованием SHA-256 и SHA-512 ), так что теперь это действительно не вопрос переполнения стека, а вопрос чисто о сбое сервера для функций MySQL 8. Оставив это здесь, на случай, если у кого-то еще возникнет эта проблема. Вы можете увидеть вопрос о сбое сервера здесь .

Здесь есть длинная предыстория, но вкратце я не могу получить MySQL 8 и Dovecot для генерации те же хеши SHA256, с той же солью и паролем. Я подозреваю, что это либо тривиальная ошибка, либо какая-то проблема со строковым кодированием (или, возможно, и то и другое).

NB Я задавал этот же вопрос о сбое сервера, так как оно показалось более подходящим, но не получаю никакой любви, и я вижу здесь несколько похожих вопросов, так что ...

Голубь:

$doveadm pw -s SHA256-CRYPT -p apassword                   
{SHA256-CRYPT}$5$h1JEsg1tmnTGS9Ub$Saoi1jr/uddYVD.n5p0hz70H9slnubpG7MQCkzpAiu4

Затем я хватаю эту соль (h1JEsg1tmnTGS9Ub) и пытаюсь получить тот же вывод из MySQL 8:

SELECT CONCAT('$5$', 'h1JEsg1tmnTGS9Ub', '$', TO_BASE64(UNHEX(SHA2(CONCAT('apassword', 'h1JEsg1tmnTGS9Ub'), 256)))) WHERE true
$5$h1JEsg1tmnTGS9Ub$Vm9gPbWHuXt/zslurPQ7Nx0JLp1CphlBQbnL9R86XbM=

Как я уже упоминал, здесь, похоже, есть несколько похожих квестонов, но они либо с MySQL 5.x с использованием функции ENCRYPT, который был удален в 8.0.3, или люди, кажется, решили сбросить соль и просто использовать SHA512 без соли. Мне кажется, что это должно быть легко, и все же ...

У кого-нибудь есть идеи о том, как получить MySQL 8 для генерации того же ha sh, что и doveadm, с тем же паролем и солью?

FWIW, я пробовал MySQL с и без TO_BASE64 и с и без UNHEX (я верю во все комбинации).

Спасибо!

...