2013-08-20 56 views
0

我有一些字符串我想使用SHA-256方式進行散列。我在網上看了一下,我非常驚訝,我找不到一個簡單的方法來做到這一點。 我知道MessageDigest類似乎提供了我需要的一切,除了一件事:這樣的一種方法:String hash256(String txt) 我也知道有辦法做到這一點(例如:here),但我不願意寫更多對於某些可能已經存在的東西來說,這不是一條線。你們知道這樣的事情是否存在?在Java中有一種簡單的散列方法嗎?

編輯:它看起來像我不夠清楚。在JDK中是否存在與以下代碼等效的現有方法?

public String hash256(String txt){ 
    MessageDigest sha = MessageDigest.getInstance("SHA-256"); 
    sha.update(txt.getBytes()); 
    byte[] digest = sha.digest(); 
    return bytesToString(digest); 
} 
+1

順便說一句,那個dup不難找到:谷歌「java SHA256」,它是最受歡迎的。不知道你的意思是「我搜索了網絡」:/ – Bohemian

+0

@Bohemian正如我所說,我想知道是否有一個jdk方法可以將字符串散列爲字符串。你提供的例子給了我字節(我知道如何對待它們,但我寧願不重新編碼已經存在的東西)。 – fxm

回答

3

您可以使用Apache Commons Library的DigestUtils.sha256()

+0

是否沒有JDK等價物? – fxm

+0

你可以在Dodd10x的答案中看到jdk等價物。你可以做一個FXMUtils類來寫出你想要的方法。 – Marcelo

+0

不是我想要的,但我想這是我能得到的最好的,謝謝。 – fxm

3
MessageDigest md = MessageDigest.getInstance("SHA-256"); 
md.update(stringAsbytes); 
stringAsBytes = md.digest(); 

然後字節轉換爲字符串。確保你指定了字符串編碼。

+0

我的問題的關鍵是:是否有一個現有的方法做到這一切(而不只是哈希到字節)? – fxm

+2

我的答案的重點是向您展示使用現有API來做你想要的是多麼簡單。對於每個問題都沒有單一的解決方案。 – Dodd10x

相關問題