我正在尝试使用 aes-256-gcm 算法解密 JSON 有效负载。好吧,起初它在 php5.6 中不起作用并在 <php7.1 中起作用
问题是,如果我们尝试解密加密的 JSON 数据,只有在同一个函数中定义加密和解密时才会解密,但是在解密函数中调用加密函数后,我必须在一个函数中加密数据,这会抛出一个空白回复。
public function encrypt() {
$key = 'f901cfe8a69615a93fdf7a98cad48179';
$method = 'aes-256-gcm';
$data = JSON_encode(array("payload"=>'Hello there this is plain JSON data'));
$iv = 12 bit(initialization vector);
return trim(opensssl_encrypt($data, $method, $key, $options=0, $iv));
}
public function decrypt() {
$encrypted = $this->encrypt();
$key = 'f901cfe8a69615a93fdf7a98cad48179';
$method = 'aes-256-gcm';
$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);
$response = openssl_decrypt($encrypted, $method, $key, $options=0,$iv);
return
}
如果我们这样做,则用于解密功能..
public function decrypt() {
$key = 'f901cfe8a69615a93fdf7a98cad48179';
$method = 'aes-256-cbc';
$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);
$encrypted2 = openssl_encrypt(arguments(same as in the encrypt function));
$response=openssl_decrypt($encrypted2, $method, $key, $options=0,$iv);
return
}
这是有效的。任何人都可以请帮忙。我试图搜索这个我发现了一条评论,其中指出我们必须在解密之前加密数据。但这对我不起作用。假设您将使用 aes-256-gcm enc 算法从客户端获取数据。我想解密那个。谢谢..!