0

我正在使用 Cipher.decrypt 解密 AES-256。在 saltOrIV 中,我将其发送如下:

var ivBytes = Encoding.fromHex("000000000000000000000000");
var ivSend = Encoding.toBase64(ivBytes);

cipher.decrypt(bodyBase64, key, "AES/GCM/PKCS5Padding", ivSend, 0);

但我收到以下异常:com.demandware.beehive.core.internal.crypt.EncryptionException: com.demandware.beehive.core.internal.crypt.EncryptionException: java.security.InvalidAlgorithmParameterException: Unsupported parameter: javax.crypto.spec.IvParameterSpec

有人可以帮我解决我做错了什么吗?

谢谢

4

1 回答 1

1

首先,"AES/GCM/PKCS5Padding"没有任何意义,请改用"AES/GCM/NoPadding"GCM不需要任何 padding

要解决此问题,请使用ivBytes而不是ivSend. 十六进制和 base 64 是二进制的文本表示。IV 本身应该由 12 个二进制字节组成,而不是 16 个包含 ASCII 基数 64 的字节。

请注意,要确保 GCM 安全,“IV”应该是唯一值,即所谓的随机数。否则,您必须为每个加密使用不同的密钥。

于 2021-05-02T11:55:35.230 回答