3DES 加密方法(ECB模式) - 使用PHP
3DES加密(Triple DES),是三重加密演算法的通稱
而3DES共有四種模式,下面介紹的是ECB模式的寫法
首先先檢查php.ini內的 php_mcrypt.dll 檔是否被啟用(有些是libmcrypt.dll)
啟用方式將dll增加到指定位置,並在php.ini檔內加上extension=php_mcrypt.dll 即可,之後就可以撰寫加密方式如下:
//加密函數撰寫
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 ="stanley543";
//要加密的字串
$string ="的字串";
echo "string=".$string."<br>";
//進行加密並顯示加密後的字串
$encode = encrypt($source,$string);
echo "encode=".$encode."<br>";
//進行解密並顯示解密後的字串
$decode = decrypt($source,$encode);
echo "decode=".$decode."<br>";
3des ECB模式加密圖結果顯示如下:
這邊跟大家說明幾個地方:
1. 如果沒有加解密過程沒有使用base64碼的話:
A. 會造成跨網域的資料傳輸時,接收端無法解讀(可是是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的)
B. 在網頁上的顯示會是亂碼(如下圖)
2. 在ECB模式當中$iv是沒有作用的(這個例子的程式如下):
//這一行完全沒有用,可註解
$iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);
//加密程式
$encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);
//解密程式
$decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
上面兩行可改寫成下面兩行
$encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB);
$decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB);
以上就是使用PHP進行3des進行ECB模式加密、解密方法
不論是3des加密或是3des當中的ECB模式的演算原理又是ㄧ門課題
因此就先不在這篇當中多做介紹。
如果覺得對你有幫助的話. 請幫小弟按個讚吧~
留言列表