所以我有(这不起作用b/c十六进制可能是错误的,键和IV没有正确转换):
(aesKey和aesIV作为第三方的十六进制字符串提供)
它们看起来像这样(不一样,但应该足以使用我替换键中的一些值,所以它们不完全相同:
<cfparam name="aesKey" default="C20648780E8843795325F3BA5EC43183C8BFA2D26B5470BC309ED5BA6B142EFA"/>
<cfparam name="aesIV" default="A53F0A6E6972A0095CFFDBE4F47C3CF8"/>
<cfset token = Encrypt(encryptString, aesKey, "AES/CBC/PKCS5Padding", "hex", aesIV)>
Run Code Online (Sandbox Code Playgroud)
错误是:
指定的密钥不是此加密的有效密钥:非法密钥大小或默认参数.
(我也不确定"十六进制"是对的)
我也有来自第三方的这个
第三方使用以下参数进行AES加密:
块长度256位
填充PKCS7
密码模式CBC
密钥长度256位(由第三方以十六进制格式提供)
初始化向量长度128位(由第三方以十六进制格式提供)秘密(私有)密钥和初始化向量用于对明文令牌执行AES加密.然后将加密的字符串传递给第三方SSO进程,在该进程中使用匹配的密钥和初始化向量对其进行解密.
所以我没有使用密钥或iv进行任何格式化或转换,但错误表明我需要管理它.
但那是我猜的地方(它确实需要一个字符串,它只是我传递的字符串是错误的)
我知道我很接近,我确实有一个"无论如何使其工作"的解决方案(我从CF转到.net并使用提供的示例代码),但我不想这样做,...但我确实拥有它.(这是我第二次从语言B回到语言A,因为我有一些有用的东西)