Cipher.dofinal(byte [])的返回值在Java中意味着什么?

时间:2013-10-30 22:41:26

标签: java encryption

我在加密模式下使用AES / CBC / PKCS5Padding Cipher aesEncryptCipher

为什么以下两个函数会返回两个不同的东西? encrypt2的返回值是什么意思?根据{{​​3}},它应该返回“带有结果的新缓冲区”,我认为这意味着“加密字节”。

public byte[] encrypt(byte[] rawBytes) {
   aesEncryptCipher.doFinal(rawBytes);
   return rawBytes;
}

public byte[] encrypt2(byte[] rawBytes) {
   return aesEncryptCipher.doFinal(rawBytes);
}

使用一些init向量和密钥,

encrypt("xxx".getBytes("UTF-8"));
returns [120, 120, 120]

encrypt2("xxx".getBytes("UTF-8"));
returns [-76, 22, 46, 63, -16, -29, 56, -85, -115, -77, 11, 16, -56, 95, 20, 29]

2 个答案:

答案 0 :(得分:2)

第一个返回原始的未加密字节(输入),第二个返回加密结果(输出)。

答案 1 :(得分:1)

encrypt函数返回纯文本,而encrypt2返回加密数据。

这是因为doFinal只查看它得到的字节数组,它不会修改它。