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
потому что он должен вычислить что-то для каждого значения в