一組PHP可逆加密解密算法實(shí)例代碼
對于大部分密碼加密,我們可以采用md5、sha1等方法。可以有效防止數(shù)據(jù)泄露,但是這些方法僅適用于無需還原的數(shù)據(jù)加密。
對于需要還原的信息,則需要采用可逆的加密解密算法。
下面一組PHP函數(shù)是實(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;
}
上述加密解密的過程均需要用到一個(gè)加密密鑰(即參數(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ù)加密。
- PHP rsa加密解密使用方法
- PHP+JS+rsa數(shù)據(jù)加密傳輸實(shí)現(xiàn)代碼
- php基于openssl的rsa加密解密示例
- php rsa 加密,解密,簽名,驗(yàn)簽詳解
- PHP的RSA加密解密方法以及開發(fā)接口使用
- PHP7.1實(shí)現(xiàn)的AES與RSA加密操作示例
- ThinkPHP實(shí)現(xiàn)的rsa非對稱加密類示例
- PHP封裝的非對稱加密RSA算法示例
- 淺談PHP SHA1withRSA加密生成簽名及驗(yàn)簽
- 基于PHP RSA密文過長加密解密 越過1024的解決方法
- PHP實(shí)現(xiàn)的簡單AES加密解密算法實(shí)例
- php的RSA加密解密算法原理與用法分析
相關(guān)文章
ThinkPHP實(shí)現(xiàn)多數(shù)據(jù)庫連接的解決方法
這篇文章主要介紹了ThinkPHP實(shí)現(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計(jì)劃任務(wù)定時(shí)執(zhí)行PHP腳本設(shè)置圖解
這篇文章主要介紹了win7計(jì)劃任務(wù)定時(shí)執(zhí)行PHP腳本設(shè)置圖解,需要的朋友可以參考下2014-05-05Yii模型操作之criteria查找數(shù)據(jù)庫的方法
這篇文章主要介紹了Yii模型操作之criteria查找數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了Yii模型中criteria的實(shí)例化與查詢操作相關(guān)技巧,需要的朋友可以參考下2016-07-07laravel 驗(yàn)證錯誤信息到 blade模板的方法
今天小編就為大家分享一篇laravel 驗(yàn)證錯誤信息到 blade模板的方法,具有很好的參考價(jià)值。希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09phpstudy本地環(huán)境搭建超詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于phpstudy本地環(huán)境搭建超詳細(xì)圖文教程的相關(guān)資料,phpStudy是集安全、高效、功能于一體且完全免費(fèi)的一鍵服務(wù)器環(huán)境搭建軟件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07PHP增刪改查項(xiàng)目的實(shí)戰(zhàn)詳解
這篇文章主要為大家詳細(xì)介紹了PHP增刪改查項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03thinkPHP框架實(shí)現(xiàn)的短信接口驗(yàn)證碼功能示例
這篇文章主要介紹了thinkPHP框架實(shí)現(xiàn)的短信接口驗(yàn)證碼功能,涉及基于thinkPHP的ajax提交、隨機(jī)數(shù)生成、短信接口調(diào)用、cookie操作等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06