使用DES和密码加密

时间:2010-12-03 21:41:00

标签: java cryptography des encryption

我正在使用我发现here的代码来加密使用DES。我将此值发送给第三方服务,但似乎不起作用。

给出代码,salt和迭代的代码中的问题用作参数来创建使用参数spec初始化密码:

// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec( salt, iterationCount );

// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key , paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key , paramSpec);

如果我更改迭代次数,我会得到不同的结果。

我如何知道电线另一侧的使用情况?我从这个第三方服务中唯一知道的是,要使用的算法是DES,当然还有密码。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

“DES”本身只是一次迭代。其后继者“Triple DES”对每个数据块进行三次加密执行算法的三次迭代。如果您希望仅使用“DES”执行加密,则一次迭代应该是正确的。

一般而言,为玩具实施以外的任何其他内容编写自己的加密函数被认为是不好的做法。为密码学编写安全,正确的库有时会很棘手。考虑使用Java平台SE 6的一部分Java Cryptography Architecture

答案 1 :(得分:1)

您的问题是您知道加密算法(DES)但不知道密钥生成算法。为了从密码导出密钥,有很多可能性。您的示例中的PBEParameterSpec使用PKCS#5算法从密码中导出密钥。对于该目的,这是一种非常好的算法,但人们通常会尝试自己开发一种简单的算法 - 例如只是哈希密码或一些更糟糕的方法。 检测使用哪种方法并不容易。如果你有一个使用该第三方服务的工作应用程序,你可以尝试对其进行逆向工程以查看它是如何工作的。