【问题标题】:Decrypt AES-256 Cipher解密 AES-256 密码
【发布时间】:2021-05-01 19:07:50
【问题描述】:

我正在使用 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

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

谢谢

【问题讨论】:

标签: encryption salesforce-commerce-cloud


【解决方案1】:

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

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

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

【讨论】:

  • 但在 Salesforce 文档中:“请注意,ARCFOUR、Blowfish、DES、RC2、DESede、DESedeWrap、PBEWithMD5AndDES、PBEWithMD5AndTripleDES1、PBEWithSHA1AndDESede 和 PBEWithSHA1AndRC2_40 转换已被弃用。此外,PKCS5Padding 是唯一受支持的填充。NOPADDING和 ISO10126PADDING 已被弃用。”
  • 这根本没有意义,只需将NoPadding 用于GCM。如果需要弃用任何东西,它是 CBC 模式。您仍然可以使用 PBKDF2,为此查找 Java 示例。哇,我可以看到那个类文档,我会尝试联系 SalesForce,因为编写方法文档的人需要得到一个线索pronto
  • 使用“AES/GCM/NoPadding”我得到了同样的例外。我也尝试过使用 PBKDF2。我认为这是他们不支持的方法。感谢您的帮助。
  • 您是否阅读了我回答的第二部分并在通话中将ivSend 替换为ivBytes?我无法从您的回复中得知!
  • 是的,我改了。但它没有用。在 C# 或 Java 中,我可以解密。我的问题出在 Salesforce Commerce Cloud 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多