1

我正在尝试使用 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 算法从客户端获取数据。我想解密那个。谢谢..!

4

0 回答 0