zoukankan      html  css  js  c++  java
  • php 加密解密方法2

    <?php
    /*
     * @param $string 要加密或解决的字符串
     * @param $operation 加密/解密 ENCODE加密, DECODE 解密
     * @param $key 加密/解决因子
    */
    function authcode($string, $operation = 'DECODE', $key = '12345678', $expiry = 0) {
        	$ckey_length = 4;
        	$key  = md5($key);
        	$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));
        	}
        }
    // 加密 $ok
    $str = '123456';
    $ok = authcode($str, 'ENCODE');
    echo $ok , "<br />";
    // 解密 $ok1
    $ok1 = authcode($ok, 'DECODE');
    echo $ok1;
    ?>
    

      

  • 相关阅读:
    Confluence 6 LDAP 服务器配置
    在 Confluence 6 中连接一个 LDAP 目录
    Confluence 6 设置公共访问
    Confluence 6 为站点禁用匿名用户访问
    Confluence 6 为站点启用匿名用户访问
    Confluence 6 配置用户目录
    Confluence 6 设置公共访问备注
    Confluence 6 为空间赋予公共访问
    Confluence 6 更新目录
    Omad群组部署、依赖部署一键解决
  • 原文地址:https://www.cnblogs.com/lin3615/p/4208736.html
Copyright © 2011-2022 走看看