簡體   English   中英

檢查Java單元測試中是否對密碼進行了哈希處理

[英]Check if a password is hashed in Java Unit test

從純文本密碼開始並應用BCrypt算法,如何測試它是否已進行哈希處理以執行Java單元測試?

使用對加密哈希函數的“屬性”的非常寬松的解釋,如果您只有哈希值,則將無法確定使用哪種哈希函數來產生該哈希值。

對於密碼和MAC,甚至還有一個特殊的“ 不可區分性 ”屬性,可以用相同的方式來松散地解釋它。 更嚴格地說,它說,給定兩個輸入值(密碼和輸出值),您將無法確定輸出是對應於第一個輸入還是對應於第二個輸入。

檢查特定密碼功能是否正確實現或使用特定密碼功能的特定代碼的方法之一是具有測試矢量,其中每一項都完整描述所有輸入數據和預期輸出。

將所有這些應用於您的用例:使用受信任的bcrypt實現以{input,bcrypt(input)}形式准備項目向量。 創建一個測試,將該輸入提交到您的系統中,並檢查輸出是否等於期望值。

如果測試失敗,您將知道被測系統使用的bcrypt實現被破壞,或者被測系統根本不使用bcrypt(使用其他哈希函數代替bcrypt)。

如果測試通過,您將知道被測系統至少對測試向量中的值使用正確的bcrypt。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM