一組PHP可逆加密解密算法實例代碼
對于大部分密碼加密,我們可以采用md5、sha1等方法。可以有效防止數(shù)據(jù)泄露,但是這些方法僅適用于無需還原的數(shù)據(jù)加密。
對于需要還原的信息,則需要采用可逆的加密解密算法。
下面一組PHP函數(shù)是實現(xiàn)此加密解密的方法:
加密算法如下:
function encrypt($data, $key)
{
$key = md5($key);
$x = 0;
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i < $len; $i++)
{
if ($x == $l)
{
$x = 0;
}
$char .= $key{$x};
$x++;
}
for ($i = 0; $i < $len; $i++)
{
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
}
return base64_encode($str);
}
解密算法如下:
function decrypt($data, $key)
{
$key = md5($key);
$x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i < $len; $i++)
{
if ($x == $l)
{
$x = 0;
}
$char .= substr($key, $x, 1);
$x++;
}
for ($i = 0; $i < $len; $i++)
{
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
{
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}
else
{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return $str;
}
上述加密解密的過程均需要用到一個加密密鑰(即參數(shù)$key)。
$data = 'PHP加密解密算法'; // 被加密信息
$key = '123'; // 密鑰
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "\n", $decrypt;
上述將輸出類似如下結(jié)果:
gniCSOzZG+HnS9zcFea7SefNGhXF
PHP加密解密算法
從上述結(jié)果可以看出,這是一組可逆的加密解密算法,可以用于部分需要還原的數(shù)據(jù)加密。
相關(guān)文章
ThinkPHP實現(xiàn)多數(shù)據(jù)庫連接的解決方法
這篇文章主要介紹了ThinkPHP實現(xiàn)多數(shù)據(jù)庫連接的解決方法,需要的朋友可以參考下2014-07-07PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法
這篇文章主要介紹了PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法,需要的朋友可以參考下2014-05-05win7計劃任務(wù)定時執(zhí)行PHP腳本設(shè)置圖解
這篇文章主要介紹了win7計劃任務(wù)定時執(zhí)行PHP腳本設(shè)置圖解,需要的朋友可以參考下2014-05-05Yii模型操作之criteria查找數(shù)據(jù)庫的方法
這篇文章主要介紹了Yii模型操作之criteria查找數(shù)據(jù)庫的方法,結(jié)合實例形式分析了Yii模型中criteria的實例化與查詢操作相關(guān)技巧,需要的朋友可以參考下2016-07-07phpstudy本地環(huán)境搭建超詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于phpstudy本地環(huán)境搭建超詳細(xì)圖文教程的相關(guān)資料,phpStudy是集安全、高效、功能于一體且完全免費的一鍵服務(wù)器環(huán)境搭建軟件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07thinkPHP框架實現(xiàn)的短信接口驗證碼功能示例
這篇文章主要介紹了thinkPHP框架實現(xiàn)的短信接口驗證碼功能,涉及基于thinkPHP的ajax提交、隨機(jī)數(shù)生成、短信接口調(diào)用、cookie操作等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-06-06