猿问

我想解密使用 openssl_encrypt 在 php 中加密的文本

php加密功能就像


 public function encrypt($value)

    {


        $key ="ATob9yt5i9ajBPaw2GkTm8QfkCG9sUnW9cn0ndZmulK=";

        $iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0)

            . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0)

            . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);

        $d = base64_decode($key);


        $value = \openssl_encrypt($value,

            $this->cipher, $d  , 0,$iv

        );


        return $value;

    }

我不知道如何在 js 中解密它。我目前正在使用 CryptoJs。最令人困惑的部分是 iv 和 base64_decode($key)。


我当前在 js 中的实现如下


function encrypt(value){


    let key = new Buffer("ATob9yt5i9ajBPaw2GkTm8QfkCG9sUnW9cn0ndZmulK=", 'base64');

    let iv = CryptoJS.enc.Utf8.parse(String.fromCharCode(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0));


    let encrypted = CryptoJS.AES.encrypt(value,CryptoJS.enc.Utf8.parse(key.toString()), {

        iv:iv,

        mode: CryptoJS.mode.CBC,

    });

}

我对 iv 密钥和在 base64 中解码密钥感到非常困惑


米琪卡哇伊
浏览 100回答 1
1回答

千万里不及你

问题是关键。如果您使用 CryptoJS.enc.Base64.parse(key) 解析密钥,它将被解决。Base64.parse 会将密钥转换为 CryptoJS 接受的字数组作为输入。
随时随地看视频慕课网APP
我要回答