在 Java 中创建 8 字节 IV



我是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 

我的上述方法是否正确?

谢谢。

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

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

此处使用DES/CBC/NoPadding是因为您在 CBC 模式下使用 DES 加密。

接下来是初始化它。

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

参数为:
第一种是加密模式,要么是Cipher.DECRYPT_MODE,要么是Cipher.ENCRYPT_MODE
第二个是您使用Class SecretKey
生成的密钥3rd 是生成 ivParameterSpec

最后一行是

outData = cipherInstance.doFinal(input);
如果模式为

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

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

最新更新