CryptoJS AES加密,然后使用openssl_decrypt在PHP中解密

I'm doing some encrypt in a API, and I have some problem with AES encrypt using CryptoJS and openssl_decrypt in PHP.

JS

        var key = "B-LOGIN",
            iv = "c5b8cfc6992807e2c78a8cda6193bca1",
            json = JSON.stringify({email : "example@example.com", password: "123456", "domainUrl" : "http://www.example.com/"}),
            enc = CryptoJS.AES.encrypt(
                JSON.stringify({email : "example@example.com", password: "123456", "domainUrl" : "http://www.example.com/"}), 
                CryptoJS.enc.Utf8.parse(key), 
                { iv: CryptoJS.enc.Utf8.parse(iv.substring(0, 16)) }
            );

console.log( enc.ciphertext.toString() ); // b53284ed65e1810b7250e2760d10f3be2b31e188f356dd36da5e906c59bea877b2cd322cfb1228035c4a06920e2504657beaa2440c94f5ff7dd6485be7b7bbd82d5e91f22d64c98322a47b0413d4b724b0e2cbf2314472b6f72b4e19a5e44052

PHP

For decrypt in php I have the following code, and It gaves me a false in $rawText.

$iv = "c5b8cfc6992807e2";
$str = "b53284ed65e1810b7250e2760d10f3be2b31e188f356dd36da5e906c59bea877b2cd322cfb1228035c4a06920e2504657beaa2440c94f5ff7dd6485be7b7bbd82d5e91f22d64c98322a47b0413d4b724b0e2cbf2314472b6f72b4e19a5e44052";
$rawText = openssl_decrypt( $str,'aes-128-cbc' , 'B-LOGIN', 0, (strlen($iv) > 16 ? substr($iv, 0 ,16) : $iv) ); // close

I think CryptoJS it gives the response in Hex format.

Thanks in advance.

dpdjpt5137
dpdjpt5137 PHP的openssl不接受十六进制编码数据,只接受base64编码或原始字节。此外,如果密钥短于算法中指定的密钥大小(aes-128-cbc),则填充零字节。我不知道crypto-js如何处理密钥,但无论如何最好使用正确的密钥而不是密码。
一年多之前 回复
douba2011
douba2011 我认为你很少被密钥和密码概念所困扰。密码短语可以是字符串,但密钥必须是二进制(或以十六进制字符串转换),因此密钥不能是B-LOGIN。看看我在这里的一个老答案:stackoverflow.com/a/43438494/2951051
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐