• php使用异或实现的加密解密


    字符串的加密解密在数据的处理中应该是经常使用的,但MD5加密是不可逆的,所以自能自己动手写一个加密解密函数,思路很。网上看了几个用异或实现的思路,看懂后就自己写了一下。异或的思路很简单,用个公示简单的表示下吧

    若a=b ^ c;则b=a ^ c (^是异或的意思),php在处理异或的字符时先把字符转化为二进制的ascii值,对这些值进行异或,获取结果后在将ascii值转化为字符,原理说晚了直接贴实现的代码:

    echo '<meta charset="utf-8">';
    $str='世界,你好';
    function jiami($str,$key){
    $key=md5($key);
    $k=md5(rand(0,100));//相当于动态密钥
    $k=substr($k,0,3);
    $tmp="";
    for($i=0;$i<strlen($str);$i++){
    $tmp.=substr($str,$i,1) ^ substr($key,$i,1);
    }
    return base64_encode($k.$tmp);
    }
    function jiemi($str,$key){
    $len=strlen($str);
    $key=md5($key);
    $str=base64_decode($str);
    $str=substr($str,3,$len-3);
    $tmp="";
    for($i=0;$i<strlen($str);$i++){
    $tmp.=substr($str,$i,1) ^ substr($key,$i,1);
    }
    return $tmp;
    }
    $key='cc';
    $jh=jiami($str, $key);
    echo '加密前:'.$str.'<br>';
    echo '加密后:'.$jh.'<br>';
    echo '解密后:'.jiemi($jh, $key).'<br>';

     有机会在完善下,本函数实现的是简单的加密解密。

  • 相关阅读:
    深入浅出Mybatis系列(一)---Mybatis入门
    深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
    深入浅出Mybatis系列(九)---强大的动态SQL
    ZK请求处理
    ZK配置文件
    ZK数据同步
    集群间通信的消息类型
    ZK客户端
    Zookeeper崩溃恢复过程(Leader选举)
    Windows编程
  • 原文地址:https://www.cnblogs.com/php321/p/3300967.html
Copyright © 2020-2023  润新知