4

我希望有一段代码能够检查给定的密码是否与存储在人群 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" 
4

1 回答 1

4

作为 Crowd 客户,您可以访问AtlassianSecurityPasswordEncoder正是这样的课程。

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

于 2014-10-03T14:38:56.130 回答