Spring Security 批量密码散列

Posted

技术标签:

【中文标题】Spring Security 批量密码散列【英文标题】:Spring Security bulk password hashing 【发布时间】:2015-04-20 06:02:30 【问题描述】:

我使用散列密码实现了 Spring Security。现在我需要以纯文本形式更新所有密码以进行哈希处理。问题是我有超过 120000 个用户,并且在 Java 中更新它需要太多时间(使用 Hibernate)

mysql 中有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

由于数据库命中率很高,您的操作会耗费大量时间。您可以将它们最小化 -

    首先bcp out到一个文件

    bcp db.my_table encrypted_file.txt -c -t\t -bbatch_size -Syour_server -Uusername -Ppassword

    然后处理文件并加密所有明文密码

    现在bcp in

    bcp db.my_table in encrypted_file.txt -c -t\t -bbatch_size -Syour_server -Uusername -Ppassword

【讨论】:

【参考方案2】:

MySQL 确实支持一些encryption functions。例如,如果你使用 SHA-1,你只需要这样调用

update user set password = SHA1(password)

【讨论】:

我在我的应用程序中使用 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder。有没有 MySQL 替代品? 您可以尝试使用ENCRYPT 函数,但它无法在Windows 上运行,因为它使用操作系统(Unix)crypt() 函数。

以上是关于Spring Security 批量密码散列的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Security BCryptPasswordEncoder 对密码进行哈希处理时凭据错误

使用发送到电子邮件的动态 URL 实现 Spring Security 密码恢复的指南

使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?

Spring Boot中Spring Security的XML配置

sec:authorize 对 Spring Security 不起作用

Spring Security 自定义登录回退