2009-12-14 59 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。有更好的,不间断的算法可用。