2

我有一个基于 Spring 的 Web 应用程序,所以我想出了使用 spring-security-3.0.8 (我知道,这不是一个很好的理由,哈哈),然后我找到了 PasswordEncoder 类。就我而言,我使用的是 Md5PasswordEncoder,但我不确定是否是最好的实现。

http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/encoding/PasswordEncoder.html

盐是由 SecureRandom 生成的。

整个代码是这样的:

String salt = new BigInteger(130, random).toString(32);
user.setSalt(salt);
user.setPassword(passwordEncoder.encodePassword(user.getPassword(), salt));
db.save(user);

我真的不需要很大的安全性,但这只是为了知识。:)

(让盐像散列一样大,将位设置为 160 怎么样?)

4

1 回答 1

4

为了提高安全性,您可能需要考虑jBCryptscrypt。Spring Security 3.1支持 BCrypt开箱即用。

更多普遍有效的信息可以在文章Secure hash and salt for PHP passwords中找到。

于 2013-05-02T16:27:14.180 回答