PHP 加密/解密函數(shù) dencrypt(動(dòng)態(tài)密文,帶壓縮功能,支持中文)
更新時(shí)間:2009年01月30日 18:48:54 作者:
采用SHA1生成密匙簿,超過(guò)300個(gè)字符使用ZLIB壓縮 支持中文,大家可以測(cè)試下。
復(fù)制代碼 代碼如下:
// +----------------------------------------------------------------------+
// | 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程序員最常犯的11個(gè)MySQL錯(cuò)誤小結(jié)
對(duì)于大多數(shù)web應(yīng)用來(lái)說(shuō),數(shù)據(jù)庫(kù)都是一個(gè)十分基礎(chǔ)性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中舉足輕重的一份子。2010-11-11php實(shí)現(xiàn)模擬post請(qǐng)求用法實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)模擬post請(qǐng)求用法,分析了php模擬post請(qǐng)求的三種常見(jiàn)用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07php使用sql server驗(yàn)證連接數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了php使用sql server驗(yàn)證連接數(shù)據(jù)庫(kù)的方法,以實(shí)例形式分析了php采用基于SQL Server驗(yàn)證進(jìn)行數(shù)據(jù)庫(kù)連接的原理及技巧,并總結(jié)了相關(guān)注意事項(xiàng),需要的朋友可以參考下2014-12-12PHP在innodb引擎下快速代建全文搜索功能簡(jiǎn)明教程【基于xunsearch】
這篇文章主要介紹了PHP在innodb引擎下快速代建全文搜索功能的方法,可基于開源搜索引擎xunsearch實(shí)現(xiàn),簡(jiǎn)明扼要的講述了安裝與使用的步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-10-10PHP簡(jiǎn)單實(shí)現(xiàn)生成txt文件到指定目錄的方法
這篇文章主要介紹了PHP簡(jiǎn)單實(shí)現(xiàn)生成txt文件到指定目錄的方法,簡(jiǎn)單對(duì)比分析了PHP中fwrite及file_put_contents等函數(shù)的使用方法,需要的朋友可以參考下2016-04-04php 修改、增加xml結(jié)點(diǎn)屬性的實(shí)現(xiàn)代碼
php修改xml結(jié)點(diǎn)屬性,增加xml結(jié)點(diǎn)屬性的代碼,有需要的朋友可以參考下2013-10-10PHP nl2br函數(shù) 將換行字符轉(zhuǎn)成 <br>
PHP nl2br函數(shù) 將換行字符轉(zhuǎn)成 <br>,不是很了解的朋友可以參考下。2009-08-08