[英]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.