Md5 и соль в Mysql

как можно "декодировать" пароль, хранящийся в различной электронной коммерции, добавляя "соль". Я не эксперты crypth... так, в прошлом, я использовал что-то вроде:

SELECT * FROM mytable WHERE email=@email AND passwd=MD5(@pwd) 

функция MySql MD5 принимает только один параметр... Как я могу это сделать, если у меня есть солонка ? Спасибо

3 ответов


вам нужно добавить столбец в mytable под названием salt, а затем получить это значение при создании хэша MD5:

SELECT * FROM mytable WHERE email=@email AND passwd=MD5(salt + ':' +@pwd)

при вставке записи вы бы сделали:

INSERT INTO mytable(email, salt, passwd)
VALUES (@email, @salt, MD5(salt + ':' + @pwd)

соль-это строка, которую вы добавляете в начало текста, которая должна быть зашифрована.

сделать это так: SELECT * FROM mytable WHERE email=@email AND passwd=MD5(CONCAT(@salt, @pwd))


эта логика должна быть в приложении, тогда вы просто сравните вычисленное значение с тем, что хранится в базе данных.

(если не в приложении, вы мог бы используйте функции в MySQL, но я бы не рекомендовал этот подход. Мне нравится держать всю логику приложения в одном месте, если это возможно, а не распространять в разных частях.)

если вы запускаете такие функции в WHERE предложения вашего запроса, MySQL не сможет использовать индекс на passwd потому что он должен вычислить что-то для каждого значения в