2020年5月13日 星期三

【PHP】 AES 256 encrypt decrypt

AES(Advanced Encryption Standard) 256 進階加密標準
用來取代舊的DES(Data Encryption Standard)

php 的 mcrypt_encrypt 函數在php7.2就不支援要使用openssl_encrypt

使用openssl加解密方法:
function encrypt($key, $payload)
{
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($encrypted . '::' . $iv);
}

function decrypt($key, $garble)
{
    list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
    return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}

$key = "ABCDE";
echo $encode = encrypt($key, "123"); 
echo "<br>";
echo $decode = decrypt($key, $encode); 

8 則留言: