制作一个PHP7的AES资料加密function

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

/ /AES资料加密
function encryptdecode($var="",$types="",$key=""){
//制作SHA3​​84-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);</span

>

输出解密字串:Good day, 201852 其中的$key值可以自订,但加密使用的$key值跟解密必须相同才行,否则是解不开的!!

参与评论