PHP 加密/解密函數(shù) dencrypt(動態(tài)密文,帶壓縮功能,支持中文)
更新時間:2009年01月30日 18:48:54 作者:
采用SHA1生成密匙簿,超過300個字符使用ZLIB壓縮 支持中文,大家可以測試下。
復(fù)制代碼 代碼如下:
// +----------------------------------------------------------------------+
// | Willko Framework |
// +----------------------------------------------------------------------+
// | Copyright (c) 2008-2009 Willko Cheng |
// +----------------------------------------------------------------------+
// | Authors: Willko Cheng <willko@foxmail.com> |
// +----------------------------------------------------------------------+
// $string 明文 或 密文
// $isEncrypt 是否加密
// $key 密匙
// 采用SHA1生成密匙簿,超過300個字符使用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);
}
相關(guān)文章
PHP怎么實現(xiàn)網(wǎng)站保存快捷方式方便用戶隨時瀏覽
網(wǎng)站保存快捷方式以后在瀏覽起來就比較方便了,實現(xiàn)的方法有很多,下面為大家詳細(xì)介紹下使用PHP實現(xiàn)網(wǎng)站快捷方式的保存,有此需求的朋友可以參考下,希望對大家有所幫助2013-08-08
php模擬post行為代碼總結(jié)(POST方式不是絕對安全)
GET行為比較簡單,POST比較復(fù)雜一些2012-02-02
php將html轉(zhuǎn)成wml的WAP標(biāo)記語言實例
這篇文章主要介紹了php將html轉(zhuǎn)成wml的WAP標(biāo)記語言的方法,實例分析了php實現(xiàn)標(biāo)簽的轉(zhuǎn)換與過濾的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-07-07
PHP+sqlite數(shù)據(jù)庫操作示例(創(chuàng)建/打開/插入/檢索)
這篇文章主要介紹了PHP+sqlite數(shù)據(jù)庫操作的方法,簡單分析了sqlite數(shù)據(jù)庫的功能及相關(guān)操作技巧,包括創(chuàng)建,打開,插入,檢索及錯誤提示等,需要的朋友可以參考下2016-05-05
PHP微信企業(yè)號開發(fā)之回調(diào)模式開啟與用法示例
這篇文章主要介紹了PHP微信企業(yè)號開發(fā)之回調(diào)模式開啟與用法,結(jié)合具體實例形式分析了php微信企業(yè)號回調(diào)模式開啟與使用方法相關(guān)操作技巧,代碼中備有詳盡的注釋說明便于讀者理解,需要的朋友可以參考下2017-11-11
php實現(xiàn)無限級分類實現(xiàn)代碼(遞歸方法)
近期做的一個網(wǎng)站需要一個無限級下拉列表的無限級分級功能,于是就有了下面的作品。2011-01-01
表單提交錯誤后返回內(nèi)容消失問題的解決方法(PHP網(wǎng)站)
這篇文章主要介紹了表單提交錯誤后返回內(nèi)容消失問題的解決方法,需要的朋友可以參考下2015-10-10

