文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一种全新的加密解密算法

一种全新的加密解密算法

时间:2008-04-15  来源:剑心通明


学习php也有一个多月,虽然自己感觉到进步不少,但是自己也没写过什么值得拿出来绚的东西,写过一个lrc歌词采集入库的函数,不过除了在编码的转换上有点
[url=javascript:;]技术[/url]
含量之外,其他也没什么。
这几天看了google code search后,一直都在想加密url参数,使之不能被采集,并保护程序的安全,减少被注入的机会。
google url 加密后的形式如
CODE:
show:bKlvupYuyQE:oK3PIFiQYaI:p2kVf7Gz8rE
我想这样的字串任谁看了都不会懂。在加密url参数时,我曾考虑过base64和md5,不过经base64加密后的字串中除了含有+、/、=外,生成的不定长度也是一个问题。而md5是不可逆的,虽然我很喜欢它。
先引用网上关于base64算法的生成过程:
QUOTE:
一、编码规则
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。
例:将对ABC进行BASE64编码
首先取ABC对应的ASCII码值。A(65)B(66)C(67)。
再取二进制值A(01000001)B(01000010)C(01000011),然后把这三个字节的二进制码接起来(010000010100001001000011),再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值(00010000)(00010100)(00001001)(00000011)。再把这四个字节数据转化成10进制数得(16)(20)(19)(3)。最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D)。这里的值实际就是数据在字符表中的索引。
注BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
二、解码规则
解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。
可以看出base64编码规则其实很简单,我们能不能改良它,使之成为只含有大小写英文字母(a-z,A-Z)和数字(0-9)共计62个字符的编码。答案当然是可以的:
一、定义一个数组$base62 = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9");
这样保证了生成的字符中只含有(a-z、A-Z、0-9),
二、对输入字符的二进制进行补位、分组处理:没有8位的补齐8位(前面补0),然后每4位进行分组。
例:decbin(ord("b"))=>1100010=>补位=>01100010=>分组=>0110、0010
三、对每次分组后的值返回(其十进制*4+(0-1)),这里的0-1是一个循环。因为4位二进制数返回的十进制数在[0(0000),15(1111)]间,而数组在[0,61]间。为了生成这些数,就须[0,15]*4+[0,1]=[0,61]。
例:0110=>bindec("0110")*4+0=>24,0010=>bindec("0010")*4+1=>9.
四、取数组中相应的字符后连接起来$base62[24]=>W,$base62[9]=>J.连接后就成了"WJ"。
相应的解码也就是一个逆推的过程。
升级版:与自定义的密匙进行异或处理后,很难破解。
高级版:在升级版的基础上配合md5可生成定长的加密串。
我想经过这些后应该可以做很多事了吧^_^


相关阅读 更多 +
排行榜 更多 +
西安交大通

西安交大通

生活实用 下载
长江云通

长江云通

生活实用 下载
translatez

translatez

生活实用 下载