`
willko
  • 浏览: 383682 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)

    博客分类:
  • php
阅读更多
// +----------------------------------------------------------------------+
// | 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);
}
1
0
分享到:
评论

相关推荐

    么下么鱼密码

    相关博文 PHP加密解密类(密文只有大小写字母和数字),支持中文加密 解密目前DEZEND工具不能够解密的zend加密php...PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文) paip.PHP zend解密—以SHOPEX4.8.4为例

    六个经典的PHP加密解密算法

    共六种PHP加解密方法, 其中包含非常给力的authcode加密函数,...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。

    delphi与java 加密解密 DES/CBC/PKCS5Padding

    同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就有问题,原来是有个7把7改成8就可以了。害人啊,, function EncryDes(const str:string;const keystr:...

    一套简单实用的字符串加密解密Demo(含源码)

    自写的加密 解密算法代码,可用于重要信息的密文传输及保存。代码简单易懂,无外部依赖,可直接复制加/解密函数到所需代码中使用。

    php凯撒密码加密和解密---适合加密英文

    内容包含凯撒密码一个加密函数,和一个解密函数,适用于有一些指定需求的人,如有问题请私信我。 恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一...

    aes.class.zip_4 3 2 1_AES加密解密类_sisteryx8

    加密结果使用bin2hex()函数转换为16进制,并且转换为全大写 * * * 解密 * 1.设定秘钥 * 2.设定密文 * 3.加密/解密 前把秘钥用hex2bin()转换为 ASCII 字符: * 4.把密文转换为全小写,并且用hex2bin()转换为 ...

    字符串加密解密DLL链接库

    基于OPENSSL进行DES加密和解密的DLL文件,支持在windows上公共函数库给Python/C#/CPP等程序开发。本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉...

    js和php配合的rsa openssl 加密解密函数

    使用公钥加密,私钥解密的方法,可以使数据在网络上安全传输,即使任何人获取到了密文,也获取到了js代码里的私钥或公钥,他也因为无法获取到与之配对的私钥或公钥而对密文毫无办法。 但是注意:公钥私钥2对,php用...

    discuz加密解密函数使用方法和中文注释

    php/** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode($string, $operation = ‘DECODE’, $key = ”, $expiry = 0) { // 动态密匙长度...

    C语言实现凯撒密码加密和解密

    C语言实现凯撒密码加密和解密 在这个程序中,我们定义了两个函数caesar_...如果输入的文本包含其他字符,加密和解密函数可能会产生意外的结果。因此,在实际使用中,您可能需要添加一些额外的输入验证和错误处理代码。

    PHP加密解密算法【6种】.zip

    共六种PHP加解密方法, 其中包含非常给力的authcode加密函数,Discuz!经典代码(带详解) 函数authcode($string, $operation, $key, $...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;

    AES 加密算法源代码20120410 (C++版,内含示例工程)

    //设置AES类的模式为加密还是解密,并说明密钥长度和明文长度(解密时为密文) //key 密钥数据 //keySize 密钥长度 //inSize 明文长度(解密时为密文) //isdecrypt 是否为解密(解密时为TRUE) //成功返回1 失败返回...

    discuz程序的PHP加密函数原理分析

    原理如下,假如: 加密 明文:1010 1001 密匙:1110 0011 密文:0100 1010 得出密文0100 1010,解密之需和密匙异或下就可以了 解密 密文:0100 1010 密匙:1110 0011 明文:1010 1001 并没有什么高深的算法,密匙...

    php加密解密函数authcode的用法详细解析

    包括康盛自己的产品,以及大部分中国使用PHP的公司都用这个函数进行加密,authcode 是使用异或运算进行加密和解密。   康盛的 authcode 函数可以说对中国的PHP界作出了重大贡献。包括康盛自己的产品,以及大部分...

    c# 加密和解密相关代码

    图19.3 使用ROT13算法加密解密数据 关 键技术 本实例实现时,主要是用Convert 类的ToChar 方法来获取单个字符的Unicode 编码,然后将字母的前13 个和后13 个对调,从而实现加密的功能。下面对Convert类的ToChar 方法...

    AES 加密算法源代码20091025 (C++版)

    //设置AES类的模式为加密还是解密,并说明密钥长度和明文长度(解密时为密文) //key 密钥数据 //keySize 密钥长度 //inSize 明文长度(解密时为密文) //isdecrypt 是否为解密(解密时为TRUE) //成功返回1 失败返回-1 ...

    pb9 调用 des64.dll 做的加密解密demo

    pb9 调用 des64.dll 做的加密解密demo 创建了两个函数: //************************************************************************** //名称: gf_Encrypt (as_string) //功能: 将明文加密成密文 //参数: as_...

    PHP对称加密函数实现数据的加密解密

    发送方将明文使用密钥和算法处理成密文发送出去,接收方使用密钥和算法将密文处理成明文,发收信双方使用同一个密钥对数据进行加密和解密。 因为使用同一个密钥加密、解密,所以安全性上不仅与算法有关,密钥的...

Global site tag (gtag.js) - Google Analytics