2012-07-06 120 views
1

我想知道我如何解密一个随机数字DES/CBC-加密一个特定的密钥。JAVA - 解密“DES”加密的随机数

我的协议声明如下: 我发送一个KeyNo(例如0x00) 发送KeyNo后,我得到一个8字节(DES)随机数。该随机数使用选定的密钥进行加密。

我的问题是我如何破译我接收到的数据,找到使用密码

感谢您的随机数。

+0

http://docs.oracle.com/cd/E15523_01/apirefs.1111/e10696/oracle/security/crypto/core/DES.html? – 2012-07-06 10:59:18

回答

3

要解密DES加密流,简单地做:

Key key = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(bytesOfThe Key)); // bytesOfTheKey should be 8 bytes long 
Cipher cipher = Cipher.getInstance("DES"); 
cipher.init(Cipher.DECRYPT_MODE, key); 
return new CipherInputStream(inputStream, cipher); 

您还可能有兴趣在doFinal方法,它的ByteBuffers上工作。

+0

我想我必须生成cipher.init的密钥。我怎么做?我有加密的随机数字00h,加密的随机数字我有它像byte []加密= {12 A7 2B 8C 6E BB 93 40} – 2012-07-06 11:24:35

+0

我编辑答案包括一种方法来创建一个DES密钥。 – 2012-07-06 11:27:52

+0

有没有办法将解密返回到8字节数组?而不是输入流 – 2012-07-06 11:42:51