我在 AES/CBC/PKCS5Padding 中使用了 AES,并在 Android 中使用了以下加密和解密代码部分:
cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(IV1));
cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(IV2));
其中 IV1 和 IV2 是随机生成的 16 字节初始化向量。我这样做是为了检查原始文本和解密文本是否会在加密和解密方中使用不同的 IV 不同。这导致解密文本的字节在前 16 个字节之后与原始文本的字节相同。例如,如果原始文本是:
Enter your message here...
解密后的文字是:
*****************ge here...
其中 * 表示错误解密的字节,因为它应该是 IV1 和 IV2 不同。
我的问题是:如何使用带有初始化向量的 AES 加密和解密长度大于 16 字节的文本?