我想要一段能够检查给定密码是否与人群cwd_user表中存储的密码相匹配的代码。
该表中的密码以“{PKCS5S2} ...”开头,我在下面的链接中发现人群正在使用PBKDF2算法:
默认为“Atlassian Security”,这是目前围绕Bouncy Castle实施PKCS 5版本2(又名PBKDF2)的愚蠢包装,使用随机16字节盐,10,000次迭代,并生成256位哈希作为最终输出
https://answers.atlassian.com/questions/235858/password-security
是否有人能够提供我可用于匹配该密码的方法?
例如,如果我创建一个密码为“1234”的用户“toto”,我会在我的数据库中获得以下行:
user_name credential
------------- -------------------------------------------------------------------------
toto {PKCS5S2}m+u8ed1RKRew3jjHPilZw0ICL6BG/qyeN+kVRRS9nsO+VK7Q5I0vCK3gLvCFWC3n
我想要一种方法:
public String getHash(String rowPassword){
// ?????
}
,其中
getHash("1234") returns "{PKCS5S2}m+u8ed1RKRew3jjHPilZw0ICL6BG/qyeN+kVRRS9nsO+VK7Q5I0vCK3gLvCFWC3n"
答案 0 :(得分:2)
作为群众客户,您可以访问类AtlassianSecurityPasswordEncoder
,就是这样。
底层编码器选择一个随机盐,忽略传入的盐,因此encodePassword
每次都不会给你相同的哈希值。使用isPasswordValid
确认密码和哈希匹配。