1

我是 Java 密码学的新手,我正在尝试编写一个程序来加密和解密一个基于 CBC 操作模式的 DES 对称密码的短语。

谁能告诉我如何创建一个 8 字节的初始化向量以及如何将新的 IV 转换为 AlgorithmParameterSpec 类?

另外,我应该导入哪些包?

编辑:现在我有这些行:

SecureRandom sr = new SecureRandom(); //create new secure random
byte [] iv = new byte[8]; //create an array of 8 bytes 
sr.nextBytes(iv); //create random bytes to be used for the IV (?) Not too sure.
IvParameterSpec IV = new IvParameterSpec(iv); //creating the IV 

我的上述方法正确吗?

谢谢。

4

1 回答 1

0

是的。直到现在你是对的。用于将初始向量传递给
在 此之后创建如下Class IvParameterSpecClass Cipher
Cipher

Cipher cipherInstance = Cipher.getInstance("DES/CBC/NoPadding");

之所以使用这里,DES/CBC/NoPadding是因为您在CBC模式下使用DES加密。

接下来是初始化它。

cipherInstance.init(Cipher.DECRYPT_MODE, Key, ivParameterSpec);

参数是:
第一个是加密模式Cipher.DECRYPT_MODECipher.ENCRYPT_MODE
第二个是您使用生成的密钥Class SecretKey
第三个是生成 ivParameterSpec

最后一行是

outData = cipherInstance.doFinal(input);

如果模式是解密,它将返回解密的数据,如果模式是加密,它将返回加密的数据。

最后但重要的是正确捕获所有异常
你完成了

于 2014-01-10T11:40:45.067 回答