如何批量加密MySQL数据库中的现有密码?

时间:2011-07-18 15:06:49

标签: encryption passwords bcrypt

我正在为客户更新网络系统,他的“帐户”表有超过20,000个用户,每个用户都有一个直文密码字段,这意味着没有任何密码被加密。 (我知道,可怕!)无论如何,我需要知道如何获取所有这些密码并轻松加密它们,最好是批处理,然后将它们导入数据库。我在搜索中找不到多少。我确实看到了B-Crypt,但它看起来主要用于文件。我是新手,所以任何建议都将非常感谢!谢谢。 :)

2 个答案:

答案 0 :(得分:2)

这是一种方法。

UPDATE table_Users
SET password = EncryptionFunctionYouChoose(password);

EDIT  其中“table_Users”是保存密码的表,“password”是密码的列名。 结束编辑

虽然更好的想法是使用单独的salt值而不是加密来散列每个密码。 (我的意见)

答案 1 :(得分:1)

据我所知,MySQL不提供内置的B-CRYPT功能。 Refer。如果您只是想通过使用MySQL查询解决此问题,您可以执行类似

的操作
update users set password = SHA2(password, 256);

但如果你喜欢BCrypt,我想你必须在app级别这样做。

关于在数据库中存储密码总是有趣的讨论。见this list