【问题标题】:How do I batch encrypt existing passwords in a MySQL db?如何批量加密 MySQL 数据库中的现有密码?
【发布时间】:2011-10-07 18:44:00
【问题描述】:
我正在为一个客户更新一个网络系统,他的“帐户”表有超过 20,000 个用户,每个用户都有一个纯文本的密码字段,这意味着没有一个密码是加密的。 (我知道,吓人!)无论如何,我需要知道如何获取所有这些密码并轻松加密它们,最好是批量加密,然后将它们导入数据库。我在搜索中找不到太多。我确实看到了 B-Crypt,但它看起来主要用于文件。我对此很陌生,所以任何建议都将不胜感激!谢谢。 :)
【问题讨论】:
标签:
encryption
passwords
bcrypt
【解决方案1】:
这是一种方法。
UPDATE table_Users
SET password = EncryptionFunctionYouChoose(password);
编辑
其中“table_Users”是保存密码的表,“password”是密码的列名。
结束编辑
虽然更好的想法是使用单独的盐值而不是加密来散列每个密码。 (我的看法)
【解决方案2】:
据我所知 MySQL 不提供内置的 B-CRYPT 功能。 Refer。如果你只是想通过使用 MySQL 查询来解决这个问题,你可以这样做
update users set password = SHA2(password, 256);
但是,如果您确实喜欢 BCrypt,我想您将不得不在应用程序级别进行。
关于在数据库中存储密码的讨论总是很有趣。见this list