首页 > 编程语言 >PHP加密解密案例--Crypt

PHP加密解密案例--Crypt

时间:2022-12-16 19:11:23浏览次数:40  
标签:加密 key -- Crypt param expire str PHP strlen

加密解密代码如下

    /**
     * 加密字符串
     * @param string $str 字符串
     * @param string $key 加密key
     * @param integer $expire 有效期(秒)     
     * @return string
     */
    public function encrypt($str,$key,$expire=0){
        $expire = sprintf('%010d', $expire ? $expire + time():0);
        $r = md5($key);
        $c=0;
        $v = "";
        $str    =   $expire.$str;
        $len = strlen($str);
        $l = strlen($r);
        for ($i=0;$i<$len;$i++){
         if ($c== $l) $c=0;
         $v.= substr($r,$c,1) .
             (substr($str,$i,1) ^ substr($r,$c,1));
         $c++;
        }
        return self::ed($v,$key);
    }

    /**
     * 解密字符串
     * @param string $str 字符串
     * @param string $key 加密key
     * @return string
     */
    public  function decrypt($str,$key) {
        $str = self::ed($str,$key);
        $v = "";
        $len = strlen($str);
        for ($i=0;$i<$len;$i++){
         $md5 = substr($str,$i,1);
         $i++;
         $v.= (substr($str,$i,1) ^ $md5);
        }
        $data   =    $v;
        $expire = substr($data,0,10);
        if($expire > 0 && $expire < time()) {
            return '';
        }
        $data   = substr($data,10);
        return $data;
    }


  public function ed($str,$key) {
      $r = md5($key);
      $c=0;
      $v = "";
      $len = strlen($str);
      $l = strlen($r);
      for ($i=0;$i<$len;$i++) {
         if ($c==$l) $c=0;
         $v.= substr($str,$i,1) ^ substr($r,$c,1);
         $c++;
      }
      return $v;
   }

 

标签:加密,key,--,Crypt,param,expire,str,PHP,strlen
From: https://www.cnblogs.com/79524795-Tian/p/16988132.html

相关文章

  • vue3中使用vite-ts构建项目时tsconfig.json的配置
    在上一次创建vue3项目在tsconfig.json中配置了文件别名以后,格式校验提示   es3什么鬼,便去看了一下tsconfig.json的配置,以此学习{"compilerOptions":{......
  • gateway资源详解
    学习目标什么是gateway在Kubernetes环境中,KubernetesIngress用于配置需要在集群外部公开的服务。但是在Istio服务网格中,更好的方法是使用新的配置模型,即IstioGateway。Gat......
  • VirtualService资源详解
    **VirtualService资源详解学习目标什么是virtualService​​VirtualService​​中文名称虚拟服务,是istio中一个重要的资源,它定义了一系列针对指定服务的流量路由规则。每个......
  • 写了一个mysql导数据程序
    最近在做容器化改造,需要把原来操作系统上的mysql数据导入到容器里mysql数据库里面,所以写了一个多线程导数据程序。使用前先创建目标数据库表结构,然后添加数据源,添加主任务,启......
  • ServiceEntry详解
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • authorizationPolicy详解
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • tekton task资源
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • workloadentry详解
    欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​​......
  • PeerAuthentication详解
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • requestAuthentication详解
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......