gpt4 book ai didi

java - AES/CFB解密

转载 作者:行者123 更新时间:2023-12-02 03:12:22 28 4
gpt4 key购买 nike

我正在尝试使用以下代码使用 AES/CFB 模式进行解密,

final static public String ENCRYPT_KEY = "4EBB854BC67649A99376A7B90089CFF1";
final static public String IVKEY = "ECE7D4111337A511F81CBF2E3E42D105";
private static String deCrypt(String key, String initVector, String encrypted) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
SecretKeySpec skSpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");

Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skSpec, iv);
byte[] original = cipher.doFinal(encrypted.getBytes());

return new String(original);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}

并抛出以下错误,

Wrong IV length: must be 16 bytes long.

以上ENCRYPT_KEY和IVKEY是有效的。有人可以帮忙吗?

最佳答案

您正在调用 "ECE7D4111337A511F81CBF2E3E42D105".getBytes("UTF-8"); 这将导致 byte[] 大小为 32,更不用说完全错误的 IV。

您需要将字符串解析byte[],例如通过从javax.xml借用DatatypeConverter .bind.

IvParameterSpec iv = new IvParameterSpec(
javax.xml.bind.DatatypeConverter.parseHexBinary(initVector));

关于java - AES/CFB解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842218/

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