2014-10-03 78 views
2

我想要一段能夠檢查給定密碼是否與人羣cwd_user表中存儲的密碼相匹配的代碼。如何匹配人羣數據庫密碼?

該表中的口令開始與「{} PKCS5S2 ......」,我在下面在人羣裏的鏈接找到使用PBKDF2算法:

默認爲「Atlassian的安全」,這是目前大約Bouncy Castle的實施PKCS 5版本2(又名PBKDF2)的,使用隨機的16字節的鹽,10,000次迭代,併產生256位散列作爲最終輸出

https://answers.atlassian.com/questions/235858/password-security

啞包裝

有人能夠提供一種我可以用來匹配密碼的方法嗎?

例如,如果我創建了一個用戶「TOTO」,密碼爲「1234」,我得到以下排在我的數據庫:

user_name  credential                 
------------- ------------------------------------------------------------------------- 
toto   {PKCS5S2}m+u8ed1RKRew3jjHPilZw0ICL6BG/qyeN+kVRRS9nsO+VK7Q5I0vCK3gLvCFWC3n 

我想一個方法,使得:

public String getHash(String rowPassword){ 
    // ????? 
} 

其中

getHash("1234") returns "{PKCS5S2}m+u8ed1RKRew3jjHPilZw0ICL6BG/qyeN+kVRRS9nsO+VK7Q5I0vCK3gLvCFWC3n" 

回答

2

,這時,一羣客戶,您可以訪問類AtlassianSecurityPasswordEncoder這正是THA噸。

底層編碼器選擇一個隨機鹽,忽略傳入的鹽,所以encodePassword每次都不會給你相同的散​​列。使用isPasswordValid來確認密碼和哈希匹配。

+0

此解決方案有效。除了這篇文章之外,我還需要添加Maven工件依賴項「crowd-password-encoders」。只需使用新的AtlassianSecurityPasswordEncoder()。isPasswordValid(「{PKCS5S2} m + u8ed1RKRew3jjHPilZw0ICL6BG/qyeN + kVRRS9nsO + VK7Q5I0vCK3gLvCFWC3n」,「1234」,null)就可以了。 – Asterius 2014-10-08 08:58:02

+0

請在此處查看完整的代碼示例:https://bitbucket.org/caspar-atlassian/crowd-password-encoder-sample-app/overview – Asterius 2014-10-08 08:59:06