JAVA-解密;";加密随机数

JAVA-解密;";加密随机数,java,encryption,des,Java,Encryption,Des,我想知道如何破译用特定密钥加密的随机数DES/CBC 我的议定书规定如下: 我正在发送一个密钥号(例如0x00) 发送KeyNo后,我得到一个8字节(DES)的随机数。此随机数用选定的密钥加密 我的问题是如何破译我收到的数据,用密码找到随机数 谢谢。要解密DES加密流,只需执行以下操作: Key key = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(bytesOfThe Key)); // bytesOfT

我想知道如何破译用特定密钥加密的随机数DES/CBC

我的议定书规定如下: 我正在发送一个密钥号(例如0x00) 发送KeyNo后,我得到一个8字节(DES)的随机数。此随机数用选定的密钥加密

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


谢谢。

要解密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);

您可能还对在byteBuffers上工作的方法感兴趣。

?我想我必须为cipher.init生成密钥。我该怎么做?我有密钥为00h的加密随机数,加密随机数像byte[]encyphered={12 A7 2B 8C 6E BB 93 40}有没有办法将解密后的数据返回到一个8字节的数组中?而不是inputstreamIm在线程“main”javax.crypto.ShortBufferException中获取ShortBufferException
异常:在com.sun.crypto.provider.SunJCE_f.b(DashoA13*)在com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA13*)在javax.crypto.Cipher.doFinal(DashoA13*)处输出缓冲区为空
这就是我所做的,告诉我它是否错了:`cipher.doFinal(输入加密,0,8,输出);System.out.println(“输出:”+OUTPUT.length);`其中,字节[]输入\加密=加密输入和输出定义为字节[]输出;