zoukankan      html  css  js  c++  java
  • PHP 简单的加密解密方法

      本算法的基础:给定字符A B,A^B=C,C^B=A,即两次异或运算可得到原字符。实现代码如下:

    /**
     * @desc加密
     * @param string $str 待加密字符串
     * @param string $key 密钥
     * @return string
     */
    function encrypt($str, $key){
        $mixStr = md5(date('Y-m-d H:i:s').rand(0,1000));
        $tmp = '';
        $strLen = strlen($str);
        for($i=0, $j=0; $i<$strLen; $i++, $j++){
            $j = $j == 32 ? 0 : $j;
            $tmp .= $mixStr[$j].($str[$i] ^ $mixStr[$j]);
        }
        return base64_encode(bind_key($tmp, $key));
    }
    
    /**
     * @desc解密
     * @param string $str 待解密字符串
     * @param string $key 密钥
     * @return string
     */
    function decrypt($str, $key){
        $str = bind_key(base64_decode($str), $key);
        $strLen = strlen($str);
        $tmp = '';
        for($i=0; $i<$strLen; $i++){
            $tmp .= $str[$i] ^ $str[++$i];
        }
        return $tmp;
    }
    
    /**
     * @desc辅助方法 用密钥对随机化操作后的字符串进行处理
     * @param $str
     * @param $key
     * @return string
     */
    function bind_key($str, $key){
        $encrypt_key = md5($key);
    
        $tmp = '';
        $strLen = strlen($str);
        for($i=0, $j=0; $i<$strLen; $i++, $j++){
            $j = $j == 32 ? 0 : $j;
            $tmp .= $str[$i] ^ $encrypt_key[$j];
        }
        return $tmp;
    }
  • 相关阅读:
    kafka-->storm-->mongodb
    zuul filter
    使用Spring Cloud Feign
    kafka客户端发布record(消息)
    kafka java api消费者
    kafka java api生产者
    kafka安装和使用
    多线程分析
    springboot入门
    centos7上svn安装
  • 原文地址:https://www.cnblogs.com/cnsr/p/8406002.html
Copyright © 2011-2022 走看看