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

问题描述 投票:0回答:1

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中对键进行解码。

javascript php openssl aes cryptojs
1个回答
0
投票

我自己解决了问题。问题是关键。如果使用CryptoJS.enc.Base64.parse(key)解析密钥,它将解决。 Base64.parse会将密钥转换为CryptoJS接受作为输入的单词数组。

© www.soinside.com 2019 - 2024. All rights reserved.