Linux下以PHP撰寫 3DES(mcrypt) 加密方法(ECB模式)
本帖最後由 IT_man 於 2014-12-11 22:31 編輯由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。首先先檢查linux是否有安裝mcrypt模組,方法如下:
rpm -qa | grep php-mcrypt
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module
<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>
然後於browser 執行phpinfo.php,結果如下:
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。之後就可以撰寫加密程式如下:
//加密函數撰寫
function encrypt($source,$toencrypt){
//加密用的key
$key = $source;
//使用3DES方法加密
$encryptMethod = MCRYPT_TRIPLEDES;
//初始化向量來增加安全性
$iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);
//使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式
$encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);
//回傳解密後字串
return base64_encode($encrypted_toencrypt);
}
//解密函數撰寫
function decrypt($source,$todecrypt) {
//解密用的key,必須跟加密用的key一樣
$key = $source;
//解密前先解開base64碼
$todecrypt = base64_decode($todecrypt);
//使用3DES方法解密
$encryptMethod = MCRYPT_TRIPLEDES;
//初始化向量來增加安全性
$iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);
//使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式
$decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
//回傳解密後字串
return $decrypted_todecrypt;
}
//寫好加解密的函數之後,就可以來進行測試了
//key設定
$source ="1234567890";
//要加密的字串
$string ="www.av4u.co";
echo "string=".$string."<br>";
//進行加密並顯示加密後的字串
$encode = encrypt($source,$string);
echo "encode=".$encode."<br>";
//進行解密並顯示解密後的字串
$decode = decrypt($source,$encode);
echo "decode=".$decode."<br>";
結果如下:
注意: 如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:
頁:
[1]