PHP使用mcrypt拓展的加密算法進行加密解密
資料加密在我們生活中的地位已經越來越重要了,尤其是考慮到在網路上發生的大量交易和傳輸的大量資料。
對於不需要復原為原始資料的訊息我們可以使用MD5、sha1等不可逆加密算法對資料進行加密處理,但對於交易訊息等需要復原為原始資料的重要訊息則必須使用可復原的加密算法進行加密了。
當然你可以自己寫一個可逆加密的算法進行加密和解密計算。
本文中我們介紹的是使用 mcrypt模組進行加密解密操作。
Mcrypt的優點不僅僅在於其提供的加密算法較多,在windows下隨PHP包一起發佈,還在於它可以對資料進行加/解密處理,此外,它還提供了內含DES算法在內的35種處理資料用的函數。
/**
+—————————————————–
* Mcrypt 加密/解密
* @param String $date 要加密和解密的資料
* @param String $mode encode 預設為加密/decode 為解密
* @return String
+—————————————————–
* @example
*/
function ZxingCrypt($date,$mode = 'encode'){
$key = md5('zxing');//用MD5哈希生成一個密鑰,注意加密和解密的密鑰必須統一
if ($mode == 'decode'){
$date = base64_decode($date);
}
if (function_exists('mcrypt_create_iv')){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
if (isset($iv) && $mode == 'encode'){
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}elseif (isset($iv) && $mode == 'decode'){
$passcrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}
if ($mode == 'encode'){
$passcrypt = base64_encode($passcrypt);
}
return $passcrypt;
}
—————————————————————-