0
我运行AES加密此Java代码:AES加密输出长度
byte[] iv = new byte[16];
SecretKey aesKey = new SecretKeySpec("hex key here", "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, aesKey, new IvParameterSpec(iv));
return cipher.doFinal("32 characters here ...".getBytes());
我总是得到一个48个字节输出,但我具有被期待一个32个字节的输入的遗留系统。如何控制输出长度?
注:我必须使用AES CBC
所以你运行上面的代码和doFinal的结果是96字节? –
为什么你期望64个字节的输出? “某些文本”将生成带有PKCS#5填充的单个块输出,并且假设您使用的是AES-256,则它将是32个字节。 – vhallac
通过使用'getBytes()'而不指定字符集,您依赖于默认值,这通常是一个错误。此外,没有编码,我知道哪些“一些文本”将导致多达64个字节的输出,更不用说96. –