制作一个PHP7的AES资料加密function-教学撰写

PHP资料加密的方法有很多,这裡推荐使用AES 对称式加解密法,这总方法除了数值本身的加密外,还加上了三方key的定义,产生的杂凑值如资料传输或存入资料表,三方key可以选一个自己知道的密码藏在网站裡面用php常数带出,这样即使资料表被人破解了拿到裡面的数值没有三方key的数值也是解不开的,AES资料加密function如下:

//AES 资料加密
function encryptdecode($var="",$types="",$key=""){
//製作SHA384-KEY
$hash_string = $key;
$hash = hash('SHA384', $hash_string, true);
$app_cc_aes_key = substr($hash, 0, 32);
$app_cc_aes_iv = substr($hash, 32, 16);
//加密
if($types==encrypt){
$data = $var;
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
$encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $app_cc_aes_key, $data, MCRYPT_MODE_CBC, $app_cc_aes_iv);
$encrypt_text = base64_encode($encrypt);
$returnvar=$encrypt_text;
}
//解密
if($types==decryption){
$encrypt =base64_decode($var);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $app_cc_aes_key, $encrypt, MCRYPT_MODE_CBC, $app_cc_aes_iv);
$padding = ord($data[strlen($data) - 1]);
$decrypt_text = substr($data, 0, -$padding);
$returnvar=$decrypt_text;
}
return $returnvar;
}

如需加密解密只要呼叫encryptdecode()函数给予值参即可

//资料加密
echo encryptdecode($var="Good day, 201852",$types="encrypt",$key=test123);

输出加密字串:dO7N6jPnOhfWpBHnefP9w0GHVrnvpkZQGmkXcCnxXFg=

//资料解密
echo encryptdecode($var="dO7N6jPnOhfWpBHnefP9w0GHVrnvpkZQGmkXcCnxXFg=",$types="decryption",$key=test123);

输出解密字串:Good day, 201852

参与评论