Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption ColdFusion:Integer";0“;不';t转换为ASCII字符_Encryption_Coldfusion_Ascii_Hex_Blowfish - Fatal编程技术网

Encryption ColdFusion:Integer";0“;不';t转换为ASCII字符

Encryption ColdFusion:Integer";0“;不';t转换为ASCII字符,encryption,coldfusion,ascii,hex,blowfish,Encryption,Coldfusion,Ascii,Hex,Blowfish,我有一个字符串(由用户ID和日期/时间戳组成),然后使用ColdFusion的encrypt(inputString,myKey,“Blowfish/ECB/PKCS5Padding”,“Hex”)对其进行加密 为了与3d方对接,我必须执行以下操作: 将结果字符串中的每个字符对转换为十六进制值 十六进制值然后表示为整数 结果整数然后输出为ASCII字符 所有ASCII字符组合成一个Bytestring 然后将Bytestring转换为Base64 Base64是URL编码并最终发送的(呸!) 除

我有一个字符串(由用户ID和日期/时间戳组成),然后使用ColdFusion的encrypt(inputString,myKey,“Blowfish/ECB/PKCS5Padding”,“Hex”)对其进行加密

为了与3d方对接,我必须执行以下操作:

  • 将结果字符串中的每个字符对转换为十六进制值
  • 十六进制值然后表示为整数
  • 结果整数然后输出为ASCII字符
  • 所有ASCII字符组合成一个Bytestring
  • 然后将Bytestring转换为Base64
  • Base64是URL编码并最终发送的(呸!)
  • 除了原始CFC加密字符串包含一个“00”时,所有这些都可以无缝工作

    十六进制值00转换为整数(通过函数InputBaseN)0,然后拒绝正确转换为ASCII字符

    结果Bytestring(因此url字符串)被弄乱,3d方无法破译它

    值得一提的是,我确实声明:在页面顶部


    有没有办法将00正确输出为ASCII码?我可以避免在原始加密字符串中包含“00”吗?任何帮助都将不胜感激:)

    我非常确定ColdFusion(以及下面的Java)使用以null结尾的字符串类型。这意味着每个字符串只包含一个asc(0)字符,即字符串终止符。如果您试图将asc(0)插入字符串,CF将出错,因为您试图创建格式错误的字符串元素


    我不确定最终的解决方案是什么。我会使用toBinary()和toString(),并与您的第三方供应商讨论解决方法,如发送原始十六进制值或类似值。

    实际上有一个非常简单的解决方案。处理您请求的信用卡公司需要您将其转换为小写十六进制字母。处理的唯一字符是:,-,0-9执行if-else并手动将其转换为字符串。

    能否提供一个小测试用例,包括实际结果与预期结果?(另外,我不知道如果encrypt()返回“hex”,为什么需要步骤1。)我发现创建真正空字符的唯一方法是URLDecode(“%00”)。尽管我甚至不确定这是否是问题所在。感谢大家的建议。我最终绕过了这个问题(感谢Leigh的指针)通过跳过整个手动十六进制十进制base64过程。通过直接从偏移量开始使用Encrypt(inputString,myKey,“Blowfish/ECB/pkcs5pdadding”,“base64”),CF为我做了艰苦的工作(哦!)。