求一段PHP利用md5加密和解密的代码

柚子模板网CTO 发布于 2015/01/25 17:22
阅读 8K+
收藏 1
PHP
求一段PHP利用md5加密和解密的代码,以前用过的,最近也找一下发现都不能正常加解密。不知道哪位朋友手上有呢?能分享下吗?
加载中
0
KKiCC
KKiCC
md5不能解密的
柚子模板网CTO
柚子模板网CTO
可能是你不理解我的意思。并非解原生MD5。只是有的加密方法当中用到MD5实现部份功能。
0
JacarriChan
JacarriChan
不要想着解密
0
Winphl
Winphl
看看dz的那个加密解密的函数,挺多人用的。
0
SaltyEgg
SaltyEgg

要是能解密的话,你可以使用base64:
http://php.net/manual/en/function.base64-encode.php

http://php.net/manual/en/function.base64-decode.php

SaltyEgg
SaltyEgg
回复 @xia-yongsheng : 我明白你的意思,编码不是加密(或者说加密是不希望被解密的编码),你可以在这编解码的基础上实现自己简单的加密方法。---- md5的设计之初是不希望被解密的(现在更多是暴力查询破解)
聽雨人
聽雨人
不要开玩笑,那个是编码,不是加密。。。
0
聽雨人
聽雨人

首先,md5是不能解密的,按你说的,应该是用到md5而已,这标题起得...

其实你可以了解下二进制操作符的亦或操作。

'我是原文' ^ '我是key' = '我是密文';
'我是key' ^ '我是密文' = '我是原文';
'我是原文' ^ '我是密文' = '我是key';

可以用这个来加密。

如果你要用到md5的话也可以:

str 是原文

key 是密钥

time shi 时间

user 是通讯id

然后 token 是密文


如果你的原文是数组的话,可以 str = serialize($array);

token = '';
md5_key = md5(user.substr(md5(time.key),12,28));
md5_key_index = 0;
md5_key_index_max = strlen(md5_key) - 1;
for(i=0, l=strlen(str); i < l; ++i){

    token.= str{i} ^ md5_key{md5_key_index};
    mk5_key_index = md5_key_index < md5_key_index_max ?  (md5_key_index + 1) : 0;

}
base64_token = base64_encode(token); //token里有各种字符需要传输的话编码一下
然后传递 base64_token,user,time

解密的话:
str = '';
token = base64_decode(str_replace(' ','+',base64_token)); //传输中会把加号变成空格,换回来然后解码
md5_key = md5(user.substr(md5(time.key),12,28));
md5_key_index = 0;
md5_key_index_max = strlen(md5_key) - 1;
for(i=0, l=strlen(token); i < l; ++i){

    str.= token{i} ^ md5_key{md5_key_index};
    mk5_key_index = md5_key_index < md5_key_index_max ?  (md5_key_index + 1) : 0;

}
$array = unserialize(str);

手打可能有误,但是大概是这样子的思路.

聽雨人
聽雨人
另外,代码最好是不要用,要明白后自己写,不然每一次到找,这样不好吧
0
鱼浴雨

http://www.cnblogs.com/ttmd5/p/6349380.html

返回顶部
顶部