起初,ColdFusion的加密:ColdFusion的3DES加密做出PHP不同加密结果`mcrypt_encrypt`
<cfset message = '1447841550'>
<cfset key = 'Mk9m98IfEblmPfrpsawt7BmxObt98Jev'>
<cfset ciphertext = Encrypt(#message#, #key#, "desede", "base64")>
<cfoutput>#ciphertext#</cfoutput>
然后,PHP的mcrypt:
$message = "1447841550";
$key = 'Mk9m98IfEblmPfrpsawt7BmxObt98Jev';
$key = base64_decode($key);
$bytes = array(0,0,0,0,0,0,0,0); //byte [] IV = {0, 0, 0, 0, 0, 0, 0, 0}
$iv = implode(array_map("chr", $bytes));
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
echo base64_encode($ciphertext);
问题。
在相同的字符串,相同的算法和相同的编码。
仍然有一部分输出不匹配。
下面是真实的样本输出。
// Coldfusion output.
n6lp0I1w5FwrP3yPw3s8bw==
^^^^^^^^^^
Same part
// PHP output.
n6lp0I1w5FxLQHskKMn4sw==
^^^^^^^^^^
Same part
为什么Coldfusion使结果不同?
如何在不修改PHP代码的情况下在Coldfusion中做出相同的结果。 PHP输出对我来说是正确的输出。
是否有可能得到正确的结果(PHP)与JavaScript?这个解决方案也很好。
我很沮丧。
在先进的感谢
解决了吗? http://stackoverflow.com/a/2819186/577052 –
嗨Bardware,我试过,但不是相同的结果。我知道我需要应用算法“DESede/ECB/NoPadding”,如PHP“MCRYPT_MODE_CBC” 它不适用于我“DESede/ECB/NoPadding”和“DESede/ECB/PKCS5Padding” 任何想法? – Juven
对不起,我的意思是DESede/CBC/NoPadding – Juven