可解密的md6(think_encrypt和think_decrypt改良版)

jerry thinkphp 2015年11月19日 收藏
一直想要md5那种加密等长,又能解密的对称加密解密方法,于是有了md6。
第一步,去OT扣来think_encrypt和think_decrypt函数。
第二步,打造自己的md6:
function md6($str='',$de=false){
    $key=('yourkey');
    $char=('MDAwMDAwMDAwM');
    if($str!=''){ 
        if($de){
            $str=$char.$str;
            $str=think_decrypt($str,$key);
        }else{
            $str=think_encrypt($str,$key);
            $str=str_replace($char, '',$str);
        }
    }
    return $str;
}
用法举例:
function test(){
  $str= '';
  for($i=1;$i<1000;$i++){
    $str=md6($i);
    echo($str.'    |    '.md6($str,true).'<br />');
  }
}
输出结果:
IKKdXY | 1
IKgdXY | 2
IKwdXY | 3
IN6dXY | 4
IOKdXY | 5
IOgdXY | 6
IOwdXY | 7
IR6dXY | 8
ISKdXY | 9
IKNeXY | 10 
...

IKNebCzdqRv | 10000
IKNebCzdqhv | 10001
IKNebCzdqxv | 10002
IKNebCzdrBv | 10003
IKNebCzdrRv | 10004
IKNebCzdrhv | 10005
IKNebCzdrxv | 10006
IKNebCzdsZv | 10007
IKNebCzdspv | 10008
IKNebCzds5v | 10009
IKNebCzhqRv | 10010 
...

IKNfbGzhqSpgqh2cg | 11110000
IKNfbGzhqSpgqh6cg | 11110001
IKNfbGzhqSpgqh-cg | 11110002
IKNfbGzhqSpgqiCcg | 11110003
IKNfbGzhqSpgqiGcg | 11110004
IKNfbGzhqSpgqiKcg | 11110005
IKNfbGzhqSpgqiOcg | 11110006
IKNfbGzhqSpgqiYcg | 11110007
IKNfbGzhqSpgqiccg | 11110008
IKNfbGzhqSpgqigcg | 11110009
IKNfbGzhqSpgrh2cg | 11110010
<3位数(数字和英文)加密后的密文长度为:6,
4-6位数(数字和英文)加密后的密文长度为:11,
7-9位数(数字和英文)加密后的密文长度为:17,



在一定范围内加密出来的密文是等长的,有什么作用就自己去发挥吧,我只能帮到这里了!