zoukankan      html  css  js  c++  java
  • PHP数组加密解密算法

    数组加密解密算法,在这里我用来加密cookie。

    功能:1、可以对数组进行加密,自己可设置加密种子,并生成随机数字和数组生成的字符串混合加密。最后生成加密后的字符串。

            2、逆向解密加密后的字符串。

    优点:加密后生成的字符串也是随机的,每次都不同。

    • 一、算法:
    class _setcookie{
    	//加密函数(参数:数组,返回值:字符串)
    	public static $key_t = "sjiofssdsfd";//设置加密种子
    	public static function encrypt($cookie_array){
    		$txt = serialize($cookie_array);
    		srand();//生成随机数
    		$encrypt_key = md5(rand(0,10000));//从0到10000取一个随机数
    		$ctr = 0;
    		$tmp = '';
    		for($i = 0;$i < strlen($txt);$i++){
    			$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
    			$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
    		}
    		return base64_encode(_setcookie::key($tmp,_setcookie::$key_t));
    	}
    	
    	//解密函数(参数:字符串,返回值:数组)
    	public static function decrypt($txt){
    		$txt = _setcookie::key(base64_decode($txt), _setcookie::$key_t);
    		$tmp = '';
    		for($i = 0;$i < strlen($txt); $i++) {
    			$md5 = $txt[$i];
    			$tmp .= $txt[++$i] ^ $md5;
    		}
    		$tmp_t = unserialize($tmp);
    		return $tmp_t;
    	}
    	
    	public static function key($txt,$encrypt_key){
    		$encrypt_key = md5($encrypt_key);
    		$ctr = 0;
    		$tmp = '';
    		for($i = 0; $i < strlen($txt); $i++) {
    			$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
    			$tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
    		}
    		return $tmp;
    	}
    }
    
    • 二、测试:
    $test=array(
    		"realname" => "小明",
    		"username" => "xiaoming",
    		"groupid" => "1",
    		"password" => "a23bsdfsdfsdf",
    		"lastlogindate"=> "2013-11-01",
    		"lastloginIP" => "10.1.1.159"
    		);
    $en_a=_setcookie::encrypt($test);
    //打印加密后的字符串 echo $en_a; echo "<br/>";
    $test_base64 = base64_decode($en_a);
    //打印用base64解密后的字符串,测试用 echo $test_base64; echo "<br/>"; $de_a=_setcookie::decrypt($en_a);
    //打印解密后的字符串 print_r($de_a);

      

  • 相关阅读:
    逛画展
    数的划分
    有点难度的树链刨分
    树链刨分
    记502 dp专练
    数论相关
    模拟退火
    仓鼠找sugar
    NOIP 2017 解题报告
    整体二分
  • 原文地址:https://www.cnblogs.com/fremcode/p/3437295.html
Copyright © 2011-2022 走看看