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配置