【发布时间】:2023-04-06 03:34:01
【问题描述】:
我有一个字符串(由用户 ID 和日期/时间戳组成),然后我使用 ColdFusion 的 Encrypt(inputString, myKey, "Blowfish/ECB/PKCS5Padding", "Hex") 对其进行加密。
为了与 3d 派对交互,我必须执行以下操作:
- 将结果字符串中的每个字符对转换为十六进制值。
- 然后将十六进制值表示为整数。
- 然后将结果整数作为 ASCII 字符输出。
- 所有 ASCII 字符组合成一个字节串。
- 然后将字节字符串转换为 Base64。
- Base64 是 URL 编码并最终发送出去(呸!)
当原始 cfEncrypted 字符串包含“00”时,这一切都可以无缝运行。
HEX 值 00 转换为整数(通过函数 InputBaseN)0 然后拒绝正确转换为 ASCII 字符!
生成的 Bytestring(以及因此的 url 字符串)被弄乱了,3d 方无法破译它。
值得一提的是,我在页面顶部声明了:
有什么方法可以正确地将 00 输出为 ASCII 吗?我可以避免在原始加密字符串中包含“00”吗?任何帮助将不胜感激:)
【问题讨论】:
-
您能否提供一个小测试用例,包括实际结果与预期结果? (另外,如果您的 encrypt() 返回“hex”,我不确定为什么需要第 1 步 ..)
标签: encryption coldfusion ascii hex blowfish