我想使用 openssl_encrypt 解密在 php 中加密的文本
I want to decrypt the text that in encrypted in php using openssl_encrypt
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 中的密钥解码感到很困惑。
问题是关键。用CryptoJS.enc.Base64.parse(key)解析key就可以解决了。 Base64.parse 会将密钥转换为单词数组,这是 CryptoJS 接受的输入。
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 中的密钥解码感到很困惑。
问题是关键。用CryptoJS.enc.Base64.parse(key)解析key就可以解决了。 Base64.parse 会将密钥转换为单词数组,这是 CryptoJS 接受的输入。