如何匹配人群数据库密码?

时间:2014-10-03 08:05:25

标签: pbkdf2 atlassian-crowd

我想要一段能够检查给定密码是否与人群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" 

1 个答案:

答案 0 :(得分:2)

作为群众客户,您可以访问类AtlassianSecurityPasswordEncoder,就是这样。

底层编码器选择一个随机盐,忽略传入的盐,因此encodePassword每次都不会给你相同的哈希值。使用isPasswordValid确认密码和哈希匹配。