2009-12-14 85 views
1

我必須使用帶有在MD5中創建的散列的DES algorythm加密文本。 MD5函數具有參數:salt(byte [8])和key(string 6),它必須迭代1000次。當我通過MD5加密函數時,它返回一個字節[16]。使用散列MD5對DES加密

DES函數的參數是:要加密的字符串和密鑰(由MD5函數返回)。但是,當我嘗試將密鑰值分配給密鑰編碼器時,我得到一個異常,因爲它等待一個bte [8]而不是一個字節[16]。我已經嘗試獲得前8個字節或最後8個字節.....但它不起作用(我有一個例子,我必須得到相同的結果)。

一些想法?

+0

你在用什麼語言?通過「它不工作」,你的意思是你仍然得到一個異常,或者你的輸出不匹配你必須重現的樣本的輸出?請給我們更多的細節。 – atzz 2009-12-14 08:53:24

回答

1

爲什麼你使用散列作爲加密密鑰?密鑰應該是密碼安全的隨機數據,而哈希不是。散列本身並不是加密。

DES密鑰通常是以8個字節打包的56位,所以從哈希中取出前8個字節意味着您的密鑰太長(取決於是否有符號或無符號),如果需要提取56位if你必須使用散列作爲源。

+2

似乎Paloma正在通過1000次迭代的MD5對用戶提供的密鑰進行密鑰擴展(http://en.wikipedia.org/wiki/Key_strengthening)。這是一種有效的技術。 – atzz 2009-12-14 08:49:22

+0

那麼他會更好地使用類似PKCS#5的派生密鑰 – blowdart 2009-12-14 08:51:13

2

DES(不要與3DES混淆)有56位密鑰。您的問題需要更多定義才能確定密鑰的正確選擇。

今天沒有理由使用DES。有更好的,不間斷的算法可用。