Почему хеши паролей mysql внутренне сохраняются со звездочкой (звездочкой)?


9

Я читал о некоторых внутренностях mysql, когда просматривая таблицу mysql.user в моей mysqlоболочке, я получаю

mysql> select * from mysql.user limit 1 \G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

Пароль явно хешируется, но почему он начинается со звездочки (звездочка)?

Ответы:


8

В дополнение к паролю, начинающемуся со звездочки, здесь есть алгоритм для ПАРОЛЯ ()

SET @plaintextpassword = 'whatever password you want';
SELECT CONCAT('*',UPPER(SHA1(UNHEX(SHA1(@plaintextpassword)))));

ПРИМЕР

mysql> SET @plaintextpassword = 'whatever password you want';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT UPPER(SHA1(UNHEX(SHA1(@plaintextpassword)))) PWD_CREATION;
+------------------------------------------+
| PWD_CREATION                             |
+------------------------------------------+
| D09AF2704D843A5E4E84362830C7EC1CEA40DF8A |
+------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT PASSWORD(@plaintextpassword) PWD_FUNCTION;
+-------------------------------------------+
| PWD_FUNCTION                              |
+-------------------------------------------+
| *D09AF2704D843A5E4E84362830C7EC1CEA40DF8A |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql>

Я давно изучил этот алгоритм из алгоритма хеширования в ПАРОЛЕ MySQL ()


14

Хорошо, нашел об этом в самой документации .

Это было изменение, введенное в mysql 4.1, так что более ранние длины паролей 16 символов и более новые длины паролей 40 символов могли одновременно поддерживаться. Столбец «Пароль» имел длину 41 байт (символы), и новые пароли начинались с обязательной *их идентификации.

Из документации :

Хэши паролей в формате 4.1 всегда начинаются с символа «*», тогда как пароли в формате до 4.1 никогда не начинаются.


Это было мое предположение тоже. Но это не держит воду. Они могли бы проверить длину, чтобы увидеть, был ли это новый против старого пароля.
Рик Джеймс

3
@ Рик Джеймс Конечно, можно проверить длину, но есть аргументы для использования первого символа в качестве «флага», чтобы разрешить будущие изменения, которые могут все еще использовать 40 символов, но другой алгоритм.
Монти Хардер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.