脚本宝典收集整理的这篇文章主要介绍了在Coldfusion中加密,然后在PHP中解密,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在PHP加密这种方式:
<?PHP $key = "$224455@"; $Valor = "testE"; $base = chop(base64_encode(mcrypt_encrypt(MCRYPT_DES,$key,$Valor,MCRYPT_MODE_ECB))); ?>
我有结果:
在ColDFusion这样做:
<CFset Valor = "TESTE"> <cfset Key = "$224455@"> <cfset base = Encrypt(Valor,ToBase64(Key),"DES/ECB/PKCS5Padding","BASE64")>
结果:
非常感谢你
Artjom B. already provided the answer above. Artjom B.写道
不幸的是,很难在CF中生产null character. AFaiK,唯一有效的技术是use URLDecode("%00")
.如果你不能修改PHP代码为@Artjom B.建议,你可以尝试使用下面的函数填充CF中的文本.免责声明:它只是经过轻微测试(CF10),但似乎产生与上述相同的结果.
更新:
自CF encrypt()函数always interprets the plain text input as a UTF-8 string起,您还可以使用charsetEncode(bytes,“utf-8”)从单个元素字节数组创建空字符,即charsetEncode(javacast(“byte []”,[0]),“utf-8”)
例:
Valor = nullPad("TESTE",8); Key = "$224455@"; result = Encrypt(Valor,"DES/ECB/NoPadding","BASE64"); // Result: TzwRx5Bxoa0= WrITeDump( "Encrypted Text = "& Result );
功能:
/* Pads a string,with null bytes,to a multiple of the given block size @param plainText - string to pad @param blockSize - pad string so it is a multiple of this size @param encoding - charset encoding of text */ string function nullPad( string plainText,numeric blockSize,string encoding="UTF-8") { local.newText = arguments.plainText; local.bytes = charsetDecode(arguments.plainText,arguments.encoding); local.remain = arrayLen( local.bytes ) % arguments.blockSize; if (local.remain neq 0) { local.padSize = arguments.blockSize - local.remain; local.newText &= rePEatString( urlDecode("%00"),local.padSize ); } return local.newText; }
以上是脚本宝典为你收集整理的在Coldfusion中加密,然后在PHP中解密全部内容,希望文章能够帮你解决在Coldfusion中加密,然后在PHP中解密所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。