gpt4 book ai didi

coldfusion - 在 Coldfusion 8(或 10)中正确传递给加密 AES 的参数

转载 作者:行者123 更新时间:2023-12-04 01:59:06 25 4
gpt4 key购买 nike

所以我有(这不起作用 b/c hex 可能是错误的,并且 key 和 IV 没有正确转换):

(aesKey 和 aesIV 由第三方提供为十六进制字符串)

它们看起来像这样(不一样但应该足以使用我替换了键中的一些值,因此它们不完全相同:

<cfparam name="aesKey" default="C20648780E8843795325F3BA5EC43183C8BFA2D26B5470BC309ED5BA6B142EFA"/>
<cfparam name="aesIV" default="A53F0A6E6972A0095CFFDBE4F47C3CF8"/>

<cfset token = Encrypt(encryptString, aesKey, "AES/CBC/PKCS5Padding", "hex", aesIV)>

错误是:

指定的 key 不是此加密的有效 key :非法 key 大小或默认参数。

(我也不确定“十六进制”是否正确)

我也有这个来自第三方

Third Party uses the following parameters for AES encryption:
Block Length 256bit
Padding PKCS7
Cipher mode CBC
Key Length 256bit (to be provided by Third Party in hexadecimal format)
Initialization Vector Length 128bit (to be provided by Third Party in hexadecimal format)

The secret (private) key and the initialization vector are used to perform AES encryption on the plaintext token. The encrypted string is then passed to Third Party SSO process where it is decrypted with the matching key and initialization vector.



因此,我没有使用 key 或 iv 进行任何格式化或转换,但错误表明我需要对其进行管理。

但这就是我猜测的地方(它确实需要一个字符串,只是我传递的字符串是错误的)

我知道我已经很接近了,而且我确实有一个“不惜一切代价让它工作”的解决方案(我从 CF 转到 .net 并使用提供的示例代码),但我不想这样做,. . .但我确实有。 (这将是我第二次从语言 B 回到语言 A,因为我有一些有用的东西)

最佳答案

为了让它工作,你必须做一些事情:

  • 默认情况下,您只能使用 128 位 AES key 。要使用更大的 key ,例如 256 位,您必须先安装 (JCE) Unlimited Strength Jurisdiction Policy Files for Java 6 , 或 Java 7/Java 8 (取决于您的 JRE 版本)。将它们复制到您的 /lib/security/目录。 (注意:如果您安装了多个 JVM,请确保在正确的一个中更新 jar,即 CF 管理员中列出的那个)。然后重新启动 CF 服务器。
  • Encrypt()期望 key 采用 base64 格式。所以使用 binaryDecode/Encode将 key 从十六进制转换为 base64:<cfset base64Key = binaryEncode(binaryDecode(yourHexKey, "hex"), "base64") />
  • iv应该是二进制的。同样,使用 binaryDecode 来转换它:<cfset binaryIV = binaryDecode(yourHexIV, "hex") />

  • 完成这些更改后,您的代码应该可以正常工作:
    Encrypt(encryptString, base64Key, "AES/CBC/PKCS5Padding", "hex", binaryIV)
    (尽管标题中的版本过时,但我发现 this article on strong encryption 是解决加密问题的一个很好的引用)

    关于coldfusion - 在 Coldfusion 8(或 10)中正确传递给加密 AES 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190613/

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