你想要有一個鹽,因爲你想做密碼散列?如果是這樣,請考慮jBCrypt,這是一個安全,非常易於使用的密碼哈希庫。您可能很容易將其作爲Groovy字符串元方法掛鉤。 :-P
如果你沒有進行密碼散列,我不確定鹽會進入哪裏;請隨時在這種情況下詳細說明。如何使用HMAC做加密散列:-)
實例(我在我的例子中使用HmacMD5
,但你可以用HmacSHA1
,HmacSHA256
,HmacSHA384
,或HmacSHA512
也):
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public byte[] hmacMD5(byte[] key, byte[] data) {
Mac mac = Mac.getInstance("HmacMD5");
mac.init(new SecretKeySpec(key, "HmacMD5"));
mac.update(data);
return mac.doFinal();
}
我很抱歉,這是Java而不是Groovy,但希望它很容易讓你適應。 :-)無論如何,在這個例子中,你的常數值將是關鍵,並且傳入的數據將是數據。
如果您的數據很大(不像您所描述的那樣),您可以多次調用update
,哈希將起作用,就好像來自這些調用的數據全部並置在一起。
我更新了我的問題以澄清。不使用此密碼散列。 – 2010-02-03 02:12:42
@Robin:根據你的問題編輯,我是否認爲這裏的「鹽」是指你發送給客戶端的時間戳,你希望它能夠逐字回覆? – 2010-02-03 02:50:40
如果是這樣,驗證散列的一種方法是使用類似HMAC-MD5的東西,並使用您的時間戳作爲HMAC密鑰。 – 2010-02-03 02:57:56