Javascript中的加密数据未使用php正确解密
我用javascript中的Cryptojs加密这个函数Javascript中的加密数据未使用php正确解密,javascript,php,encryption,mcrypt,cryptojs,Javascript,Php,Encryption,Mcrypt,Cryptojs,我用javascript中的Cryptojs加密这个函数 function encode(text, skey) { var base64Iv = "0123456789abcdef"; var key = CryptoJS.enc.Base64.parse(skey); var iv = CryptoJS.enc.Base64.parse(base64Iv); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc
function encode(text, skey) {
var base64Iv = "0123456789abcdef";
var key = CryptoJS.enc.Base64.parse(skey);
var iv = CryptoJS.enc.Base64.parse(base64Iv);
var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(text), key, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});
var encryptedData = encrypted.toString();
return encryptedData;
}
并尝试用php_mcrypt通过这个函数对其进行解密
function decrypt($crypt, $key, $type){
$enc = MCRYPT_RIJNDAEL_128;
$mode = MCRYPT_MODE_CBC;
$iv = "0123456789abcdef";
$crypt = base64_decode($crypt);
$padtext = mcrypt_decrypt($enc, base64_decode($key) , $crypt, $mode, $iv);
echo ("PADTEXT"+$padtext);
$pad = ord($padtext
{
strlen($padtext) - 1});
if ($pad > strlen($padtext)) return false;
if (strspn($padtext, $padtext{ strlen($padtext) - 1}, strlen($padtext) - $pad) != $pad)
{
$text = "Error";
}
$text = substr($padtext, 0, -1 * $pad);
echo ("TEXT "+$text);
return $text;
}
我使用的是相同的密钥和iv,但是它没有正确地解密字符串的开头
预期结果:
00paygate | 201710270001 | 12345 | 16 |美元|印度卢比|销售|
实际结果:
00�-ܗ�ڀ��x��RTWQ0001 | 12345 | 16 |美元|印度卢比|销售|为什么要在javascript中使用加密,而不是简单的https?您的IV逻辑毫无意义。如果不是base64,为什么要从base64解码IV?首先在JavaScript中修复此问题。