PHP 加密/解密函數(shù) dencrypt(動(dòng)態(tài)密文,帶壓縮功能,支持中文)
// +----------------------------------------------------------------------+
// | Willko Framework |
// +----------------------------------------------------------------------+
// | Copyright (c) 2008-2009 Willko Cheng |
// +----------------------------------------------------------------------+
// | Authors: Willko Cheng <willko@foxmail.com> |
// +----------------------------------------------------------------------+
// $string 明文 或 密文
// $isEncrypt 是否加密
// $key 密匙
// 采用SHA1生成密匙簿,超過(guò)300個(gè)字符使用ZLIB壓縮
function dencrypt($string, $isEncrypt = true, $key = KEY_SPACE) {
if (!isset($string{0}) || !isset($key{0})) {
return false;
}
$dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40);
$fixedKey = hash('sha1', $key);
$dynKeyPart1 = substr($dynKey, 0, 20);
$dynKeyPart2 = substr($dynKey, 20);
$fixedKeyPart1 = substr($fixedKey, 0, 20);
$fixedKeyPart2 = substr($fixedKey, 20);
$key = hash('sha1', $dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2);
$string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40)));
$n = 0;
$result = '';
$len = strlen($string);
for ($n = 0; $n < $len; $n++) {
$result .= chr(ord($string{$n}) ^ ord($key{$n % 40}));
}
return $isEncrypt ? $dynKey . str_replace('=', '', base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20);
}
- php 的加密函數(shù) md5,crypt,base64_encode 等使用介紹
- php使用crypt()函數(shù)進(jìn)行加密
- php基于mcrypt的加密解密實(shí)例
- PHP加密擴(kuò)展庫(kù)Mcrypt安裝和實(shí)例
- PHP mcrypt可逆加密算法分析
- php結(jié)合md5實(shí)現(xiàn)的加密解密方法
- php實(shí)現(xiàn)MD5加密16位(不要默認(rèn)的32位)
- php結(jié)合md5的加密解密算法實(shí)例
- 利用PHP腳本在Linux下用md5函數(shù)加密字符串的方法
- PHP常見(jiàn)加密函數(shù)用法示例【crypt與md5】
相關(guān)文章
PHP怎么實(shí)現(xiàn)網(wǎng)站保存快捷方式方便用戶(hù)隨時(shí)瀏覽
網(wǎng)站保存快捷方式以后在瀏覽起來(lái)就比較方便了,實(shí)現(xiàn)的方法有很多,下面為大家詳細(xì)介紹下使用PHP實(shí)現(xiàn)網(wǎng)站快捷方式的保存,有此需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
php組合排序簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了php組合排序簡(jiǎn)單實(shí)現(xiàn)方法,涉及php數(shù)據(jù)結(jié)構(gòu)與數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
php實(shí)現(xiàn)的操作excel類(lèi)詳解
這篇文章主要介紹了php實(shí)現(xiàn)的操作excel類(lèi),較為詳細(xì)的分析說(shuō)明了PHP操作excel的具體技巧,包括PHP針對(duì)excel的創(chuàng)建、打開(kāi)、讀取、修改等,需要的朋友可以參考下2016-01-01
php模擬post行為代碼總結(jié)(POST方式不是絕對(duì)安全)
GET行為比較簡(jiǎn)單,POST比較復(fù)雜一些2012-02-02
php將html轉(zhuǎn)成wml的WAP標(biāo)記語(yǔ)言實(shí)例
這篇文章主要介紹了php將html轉(zhuǎn)成wml的WAP標(biāo)記語(yǔ)言的方法,實(shí)例分析了php實(shí)現(xiàn)標(biāo)簽的轉(zhuǎn)換與過(guò)濾的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-07-07
PHP+sqlite數(shù)據(jù)庫(kù)操作示例(創(chuàng)建/打開(kāi)/插入/檢索)
這篇文章主要介紹了PHP+sqlite數(shù)據(jù)庫(kù)操作的方法,簡(jiǎn)單分析了sqlite數(shù)據(jù)庫(kù)的功能及相關(guān)操作技巧,包括創(chuàng)建,打開(kāi),插入,檢索及錯(cuò)誤提示等,需要的朋友可以參考下2016-05-05
PHP微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式開(kāi)啟與用法示例
這篇文章主要介紹了PHP微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式開(kāi)啟與用法,結(jié)合具體實(shí)例形式分析了php微信企業(yè)號(hào)回調(diào)模式開(kāi)啟與使用方法相關(guān)操作技巧,代碼中備有詳盡的注釋說(shuō)明便于讀者理解,需要的朋友可以參考下2017-11-11
php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)實(shí)現(xiàn)代碼(遞歸方法)
近期做的一個(gè)網(wǎng)站需要一個(gè)無(wú)限級(jí)下拉列表的無(wú)限級(jí)分級(jí)功能,于是就有了下面的作品。2011-01-01
表單提交錯(cuò)誤后返回內(nèi)容消失問(wèn)題的解決方法(PHP網(wǎng)站)
這篇文章主要介紹了表單提交錯(cuò)誤后返回內(nèi)容消失問(wèn)題的解決方法,需要的朋友可以參考下2015-10-10

