zoukankan      html  css  js  c++  java
  • php字符串常用算法--字符串加密解密

    /**
     * 加密、解密字符串
     *
     * @global string $db_hash
     * @global array $pwServer
     * @param $string 待处理字符串
     * @param $action 操作,ENCODE|DECODE 
     * @return string
     */
    function StrCode($string, $action = 'ENCODE') {
     $action != 'ENCODE' && $string = base64_decode($string);
     $code = '';
     $key = substr(md5($_SERVER['HTTP_USER_AGENT']), 8, 18);
     $keyLen = strlen($key);
     $strLen = strlen($string);
     for ($i = 0; $i < $strLen; $i++) {
      $k = $i % $keyLen;
      $code .= $string[$i] ^ $key[$k];
     }
     return ($action != 'DECODE' ? base64_encode($code) : $code);
    }
    /*
     * ENCODE为加密,DECODE为解密
     * 加密就是把字符串的每个字符进行^运算,生成新字符串再base64一下返回。
     * 用来进行^运算的字符串通过MD5一些全局变量再substr获得。
     * 
     * 这里注意,^运算必须是2个长度相同的字符串才不会产生掉串,
     * 例如:'asd'^'123' == 'PAW',但是'asd'^'123456'还是等于'PAW',多余的字符掉了,
     * 并且不知道传入的字符串到底是多长,因此生成^运算的字符串也不知道要生成多长,
     * 这里用循环的方式进行处理,即^运算的字符串可以是任意长度,然后要加密的字符串用第一个字符与^运算的字符串的第一个字符进行与运算,
     * 以此类推,当^运算的字符长度不够时就循环使用,上边的for循环里边的取%运算就是这个道理。 
     */
  • 相关阅读:
    centos7配置vsftpd
    vsftpd上传文件出现553 Could not create file错误解决方法
    mysql表引擎myisam改为innodb
    python字符串
    linux虚拟机设置本地yum源
    python3读取excel数据
    expect远程登录服务器并执行命令
    sed中支持变量的处理方法
    test
    test
  • 原文地址:https://www.cnblogs.com/leezhxing/p/4121259.html
Copyright © 2011-2022 走看看