gpt4 book ai didi

java - AES加密输出长度

转载 作者:行者123 更新时间:2023-12-01 17:31:20 27 4
gpt4 key购买 nike

我正在运行此 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

最佳答案

由于您使用的填充,您将获得 32+16 字节。

通常填充仅填充剩余字节,直到下一个密码 block 已满。但在你的情况下,明文已经使用了 2 个 block (2 * 16 字节)。在这种情况下,没有剩余空间来编码“无需填充”的信息。因此,必须添加一个仅包含填充数据的附加密码 block 。

可能是旧系统不使用填充。尝试“AES/CBC/NoPadding”

关于java - AES加密输出长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585366/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com