我有一个MysqL数据库,我正在使用PHPMyAdmin来访问它.数据库具有表员工,其中包含姓名,地址,电子邮件和密码等字段.
最初,密码字段只是VARCHAR(20).但现在我想用SHA-256哈希技术哈希我的密码.
我对数据库没有太多经验,所以我想知道的是 –
>我可以在不影响其他字段或整个表格的情况下散列所有当前员工的密码吗?
>将来当我在数据库中输入数据时(来自Web应用程序),我在哪里编写散列函数来散列密码?即,是否在前端发生散列,然后散列密码存储在DB中,或者密码进入散列然后存储的DB.
解决方案和建议表示赞赏.
最佳答案
问题1:我可以在不影响其他字段或整个表的情况下散列所有当前员工的密码吗?
原文链接:https://www.f2er.com/mysql/433425.html答:是的.但是您需要将密码列的大小改为40-42.您将使用PASSWORD()内置函数来加密您的密码
ALTER TABLE tableName MODIFY `password` VARCHAR(42);
之后,您现在可以更新密码列
UPDATE tablename
SET `password` = PASSWORD(`password`);
前).
abcde12345 => *20B30AFAF441808B50273EDA287132EC25B02DE2
Q2:将来当我在数据库中输入数据时(来自Web应用程序),我在哪里编写散列函数来散列密码?
答:在您的INSERT查询中
INSERT INTO tableName (name,address,email,password)
VALUES ('aa','bb',''cc,PASSWORD('abcde12345'))
当您要搜索密码时,首先加密文本:
SELECT *
FROM tableName
WHERE `password` = PASSWORD('abcde12345')
还有一件事,不要忘记使用反引号来转义密码列,因为它是MySQL Reserved Word.