Encryption ColdFusion:Integer";0“;不';t转换为ASCII字符
我有一个字符串(由用户ID和日期/时间戳组成),然后使用ColdFusion的encrypt(inputString,myKey,“Blowfish/ECB/PKCS5Padding”,“Hex”)对其进行加密 为了与3d方对接,我必须执行以下操作: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编码并最终发送的(呸!) 除
有没有办法将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为我做了艰苦的工作(哦!)。