我有一个字符串(由用户 ID 和日期/时间戳组成),然后我使用 ColdFusion 的Encrypt(inputString, myKey, "Blowfish/ECB/PKCS5Padding", "Hex") 对其进行加密。
为了与 3d 派对交互,我必须执行以下操作:
- 将结果字符串中的每个字符对转换为 HEX 值。
- 然后将 HEX 值表示为整数。
- 然后将结果整数作为 ASCII 字符输出。
- 所有的 ASCII 字符组合起来形成一个字节串。
- 然后将字节串转换为 Base64。
- Base64 是 URL 编码并最终发送出去(呸!)
当原始 cfEncrypted 字符串包含“00”时,这一切都可以无缝运行。
十六进制值 00 转换为整数(通过函数 InputBaseN) 0 然后拒绝正确转换为 ASCII 字符!
生成的 Bytestring(以及因此的 url 字符串)被弄乱了,3d 方无法破译它。
值得一提的是,我确实在页面顶部声明了:<cfcontent type="text/html; charset=iso-8859-1">。
有什么方法可以正确地将 00 输出为 ASCII 吗?我可以避免在原始加密字符串中包含“00”吗?任何帮助将不胜感激 :)