Как правильно использовать AES_ENCRYPT?
Я пытаюсь использовать шифрование AES (AES_ENCRYPT в MySQL) для паролей пользователей, но я столкнулся с кучей разных проблем.
Это SQL-запрос, который я использую для хранения нового пользователя в базе данных:
INSERT INTO user VALUES (
'15',
'John',
'Doe',
'123 Fake St.',
AES_ENCRYPT('mypassword', 'mysalt'),
'mysalt'
)
Где соль будет случайной строкой в реальном случае.
Работает нормально. Я имею в виду, я могу восстановить оригинальный пароль. В этом примереAES_DECRYPT(user.password, 'mysalt') WHERE user.id = 15
извлекаетmypassword
, Но я мог бы пропустить некоторые вещи.
Безопасно ли сохранять соль вместе с паролем? Помимобезопасность через мрак.
В каком формате лучше хранить хешированный пароль? я использую
VARBINARY, но сохраненная строка выглядит8�p�����_�Z�\
.
И наконец, как долго должен быть пароль и как долго соль должна быть?
Спасибо