zoukankan      html  css  js  c++  java
  • 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>';

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

  • 相关阅读:
    win8及win8.1商店出现0X80073CF9的解决办法!
    Ubuntu 14.04 登陆界面循环问题解决
    Java学习笔记-Json
    Java学习笔记-Thread-线程
    git学习笔记
    Java学习笔记-File
    java学习笔记-set
    C# 实验4 数据库
    C#文件处理
    C#-实验3
  • 原文地址:https://www.cnblogs.com/php321/p/3300967.html
Copyright © 2011-2022 走看看