簡體   English   中英

如何使用`openssl`正確解密PHP中的`aes-256-ctr`

[英]How to properly decrypt `aes-256-ctr` in PHP using `openssl`

我正在嘗試使用以下代碼加密和解密PHP中的一些字符串:

$form_data_str = 'random string generated for testing';
  $algorithm = 'aes-256-ctr';
  $sKey = '1lgs2gjwjPZpeqUHlYD9ktJBXfsuH5al'; 
  $iv = 'gKySztfUMx7uQEl7';

  // Encrypt
  $encrypted_data = bin2hex(openssl_encrypt($form_data_str, $algorithm, $sKey, OPENSSL_RAW_DATA, $iv));
  echo "Encrypted: ".$encrypted_data;
  //Decrypt
  $decrypted_data =bin2hex(openssl_decrypt($encrypted_data, $algorithm, $sKey, OPENSSL_RAW_DATA, $iv));
  echo "Decrypted: ".$decrypted_data;

但是 output 是:

Encrypted: e10eff36816e73b1b68154b665f5661553fa3be89b022beea74174aeacb956d6109fa1
Decrypted: f65ea137886560f4fac20bbd35e663415fa971b8da532df8f71b60bbeeea14974cc2a0ed4b7035692f9f451d789c91673e62091db970159d8d4036700b414418bb8a2d4a71ed

如何正確解密此加密數據以顯示原始字符串?

嘗試以下代碼您需要使用pack函數來反轉bin2hex。

 $form_data_str = 'random string generated for testing';
      $algorithm = 'aes-256-ctr';
      $sKey = '1lgs2gjwjPZpeqUHlYD9ktJBXfsuH5al'; 
      $iv = 'gKySztfUMx7uQEl7';

      // Encrypt
      $encrypted_data = bin2hex(openssl_encrypt($form_data_str, $algorithm, $sKey, OPENSSL_RAW_DATA, $iv));
      echo "Encrypted: ".$encrypted_data;
      //Decrypt
      $decrypted_data = openssl_decrypt(pack('H*', $encrypted_data), $algorithm, $sKey, OPENSSL_RAW_DATA, $iv);
      echo "<br>Decrypted: ".$decrypted_data;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM