【发布时间】:2012-09-03 12:41:26
【问题描述】:
我正在为我的应用程序开发一个身份验证组件。我正在使用带有加盐密码的 Apache Shiro API。
我用这个例子中的盐创建了一个新用户:
ByteSource salt = randomNumberGenerator.nextBytes(32);
byte[] byteTabSalt = salt.getBytes();
String strSalt = byteArrayToHexString(byteTabSalt);
String hashedPasswordBase64 = new Sha256Hash(inPassword, salt, 512).toBase64();
但我不明白我应该如何使用盐在 doGetAuthenticationInfo 方法中对用户进行身份验证。我的方法必须返回一个 SaltedAuthenticatedInfo,但我不明白我应该如何创建它。
我不明白 Credential Matcher 和 SaltedAuthenticateInfo 之间的联系。
创建密码盐时是否必须通知凭据匹配器?
感谢您的帮助。
【问题讨论】:
-
512 是way too low for the iteration count。我认为任何人推荐的最低是1000,10,000+更常见。此外,您不需要将盐转换为字符串。
-
我将我的 salt 转换为字符串,以便将其放入我的数据库中。我将使用更大的迭代次数。感谢您的回答。