大牛们总是能深入的了解到一些东西,比如下面这篇文章,从DZ中挖掘出一个好用的函数。围观之…
最近,从discuz里面发现了一个很牛的加密解密函数。
此函数的厉害之处在于可以在指定时间内加密还原字符串,超时无法还原这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码啦等等
18 |
function authcode( $string , $operation = 'DECODE' , $key = '' , $expiry = 3600) {
|
25 |
$key = md5( $key ? $key : EABAX::getAppInf( 'KEY' ));
|
26 |
$keya = md5( substr ( $key , 0, 16));
|
27 |
$keyb = md5( substr ( $key , 16, 16));
|
28 |
$keyc = $ckey_length ? ( $operation == 'DECODE' ? substr ( $string , 0, $ckey_length ): substr (md5(microtime()), - $ckey_length )) : '' ;
|
30 |
$cryptkey = $keya .md5( $keya . $keyc );
|
31 |
$key_length = strlen ( $cryptkey );
|
33 |
$string = $operation == 'DECODE' ? base64_decode ( substr ( $string , $ckey_length )) : sprintf( '%010d' , $expiry ? $expiry + time() : 0). substr (md5( $string . $keyb ), 0, 16). $string ;
|
34 |
$string_length = strlen ( $string );
|
40 |
for ( $i = 0; $i <= 255; $i ++) {
|
41 |
$rndkey [ $i ] = ord( $cryptkey [ $i % $key_length ]);
|
44 |
for ( $j = $i = 0; $i < 256; $i ++) {
|
45 |
$j = ( $j + $box [ $i ] + $rndkey [ $i ]) % 256;
|
51 |
for ( $a = $j = $i = 0; $i < $string_length ; $i ++) {
|
53 |
$j = ( $j + $box [ $a ]) % 256;
|
57 |
$result .= chr (ord( $string [ $i ]) ^ ( $box [( $box [ $a ] + $box [ $j ]) % 256]));
|
60 |
if ( $operation == 'DECODE' ) {
|
61 |
if (( substr ( $result , 0, 10) == 0 || substr ( $result , 0, 10) - time() > 0) && substr ( $result , 10, 16) == substr (md5( substr ( $result , 26). $keyb ), 0, 16)) {
|
62 |
return substr ( $result , 26);
|
67 |
return $keyc . str_replace ( '=' , '' , base64_encode ( $result ));
|
分享到:
相关推荐
c#对字符串加密解密函数源代码 传入string返回加密后字符串 直接可用
PB字符串加密、解密函数,非常好用。PB字符串加密、解密函数,非常好用。
加密解密密钥互为相反数,值不能过大,不然会出错,有不可打印字符
字符串加密解密算法
c++的des 加密解密代码,vs2017编译通过,可打开debug目录下的exe,查看效果,适合参考与学习
PHP字符串加密和解密,可以把字符串加密,还可以解密
一个php字符串加密解密的类,使用base64_encode()函数对字符串进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...
QT C++ AES字符串加密解密类库,引入即可使用
关于字符串加密解密(des字符串加密解密)
js中对字符串加密解密算法
加密解密字符串.exe huanyin下载
ASP字符串的加密解密函数ASP字符串的加密解密函数
asp字符串加密解密函数
基于DES任意长度字符串的加密和解密,MFC界面
ASP字符串的加密解密函数.pdf
php 加密 解密 函数php 加密 解密 函数php 加密 解密 函数php 加密 解密 函数
一个简单的字符串加密解密算法,使用C#语言实现。。。
.net下C#数据库连接字符串在配置文件中的加密解密类
代码是linux下C代码. 测试结果:1 加密字符串:0123456789 加密后:BF351535D0C074C023539FAAB05DFAC2 解密后:0123456789 测试结果:2 加密字符串:111 加密后:CFF0BC43B3F385C8 解密后:111