[英]Understanding hashing passwords in Java by MessageDigest
我正在創建一個簡單的Web應用程序,並希望將散列密碼存儲到數據庫中。 我也需要身份驗證令牌的哈希函數(連接用戶名和日期,並將它們的哈希值作為令牌發送給客戶端)。
我發現MessageDigest Java類可以幫助我解決這個問題。 這是一個鏈接 。 基本想法是這樣的:
public String digestString (String stringToHash) throws NoSuchAlgorithmException {
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] stringBytes = stringToHash.getBytes();
byte[] stringDigest = sha256.digest(stringBytes);
return new String(stringDigest);
}
我得不到的是:在這段代碼中,我該如何設置哈希鍵? 我需要確保在驗證過程中使用相同的密鑰。 如果我沒有設置密鑰,我怎么能這樣做?
順便說一句:我知道我應該在哈希值之前添加一個鹽(在這種情況下為256字節)到散列文本。
哈希不使用密鑰。 這只是一種單向算法。 你給它一些消化的東西,然后它返回一個哈希值。 它保證的是,找到導致相同散列的原始輸入或任何其他輸入非常困難。
您的算法有兩個基本問題(除了缺少鹽析):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.