搜索
系统检测到您的用户名不符合规范:

分享一个加密解密函数

浏览:5483 发布日期:2014年06月11日 分类:技术分享 关键字: 加密 解密
这个函数看得我好晕啊!脑细胞都死了好 多了!所以发上来送给大家!/**
* Discuz 加密/解密
*
* @param [type] $string [description]
* @param string $operation [description]
* @param string $key [description]
* @param integer $expiry [description]
* @return [type] [description]
*/
function authcode( $string, $operation = 'DECODE', $key = '', $expiry = 0 ) {
$ckey_length = 4;
$key = md5( $key != '' ? $key : C( 'AUTH_CODE' ) );
$keya = md5( substr( $key, 0, 16 ) );
$keyb = md5( substr( $key, 16, 16 ) );
$keyc = $ckey_length ? ( $operation == 'DECODE' ? substr( $string, 0, $ckey_length ): substr( md5( microtime() ), -$ckey_length ) ) : '';

$cryptkey = $keya.md5( $keya.$keyc );
$key_length = strlen( $cryptkey );

$string = $operation == 'DECODE' ? base64_decode( substr( $string, $ckey_length ) ) : sprintf( '%010d', $expiry ? $expiry + time() : 0 ).substr( md5( $string.$keyb ), 0, 16 ).$string;
$string_length = strlen( $string );

$result = '';
$box = range( 0, 255 );

$rndkey = array();
for ( $i = 0; $i <= 255; $i++ ) {
$rndkey[$i] = ord( $cryptkey[$i % $key_length] );
}

for ( $j = $i = 0; $i < 256; $i++ ) {
$j = ( $j + $box[$i] + $rndkey[$i] ) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}

for ( $a = $j = $i = 0; $i < $string_length; $i++ ) {
$a = ( $a + 1 ) % 256;
$j = ( $j + $box[$a] ) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr( ord( $string[$i] ) ^ ( $box[( $box[$a] + $box[$j] ) % 256] ) );
}

if ( $operation == 'DECODE' ) {
if ( ( substr( $result, 0, 10 ) == 0 || substr( $result, 0, 10 ) - time() > 0 ) && substr( $result, 10, 16 ) == substr( md5( substr( $result, 26 ).$keyb ), 0, 16 ) ) {
return substr( $result, 26 );
} else {
return '';
}
} else {
return $keyc.str_replace( '=', '', base64_encode( $result ) );
}
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
疯狂的土豆
积分:559 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /