读书人

一个相仿 Base64 但真正实现了加密的

发布时间: 2012-10-13 11:38:17 作者: rapoo

一个类似 Base64 但真正实现了加密的 JS 文字加密算法
算法的基本原理和 Base64 类似。Base64 算法请参见维基百科 http://zh.wikipedia.org/zh-cn/Base64。

这里把 Base64 中使用的基本字符表进行了随机化——即用基本字符表排列的随机性作为密钥的变化性。同时,考虑编码方法的应用环境多为 Javascript,故将 Base64 规范字符表中的 “+/=” 改成了 “$_~”,便于网络传输和变量命名等。

对 “纯单字节” 字符串或 “纯双字节” 字符串,密文的长度增长 0.35 倍左右;在单/双字节混合的字符串中,因为需要在 “单/双字节序列” 间插入标识码(状态指示),故密文的长度会有所加长,但也不会增加太多。

该加密法的密文长度增加量略低于 “进制乱序法”,加密强度约为 296 位(64 的阶乘),算法中没有加入 “平移” 的二次操作,如果嫌加密强度不够,可以简单的对密文进行平移操作(详见 http://rubel.iteye.com/blog/891657)。

算法的编写参考了 《base64的js实现》,在此致谢!(注:该算法中未对编码串作 76 字符分段)

算法 4: Base64 变形加密法

<script language="JavaScript">    var _str = "中文字符串和 English char string 的 JS 加密 1234. 包含一些标点符号,*@%! 等。";    //php -r "$a=range(0,63); shuffle($a); echo join(',', $a);"    var _k3 = [38,48,18,11,26,19,55,58,10,33,34,49,14,25,44,52,61,16,2,56,23,29,45,9,3,12,39,30,42,47,22,21,60,1,54,28,57,17,27,15,40,46,43,13,0,51,35,63,36,50,6,32,4,31,62,5,24,8,53,59,41,20,7,37];    var _o = new Hex64(_k3);    var _enc3 = _o.enc(_str);    alert(_enc3)    alert(_o.dec(_enc3));    //wNOpC3lUT50RuSXNSm4yGj8FUtHWdImSdtJ6AwP4gRHZC6cllezlAQkuAmV2eJ_tw2coESE4nscl    //NaTNY4Ocukpem5I8M6CuKbfEw2kcX2Qyw9pXEcA~


附件中:
xtools.js 里包含前面几篇文章中提及的几个文字加密算法(JS 版,稍有调整),以及 Window.name 跨域实现的代码;
其它几个文件为测试用的 html 文件。
1 楼 50980487 2011-02-17 感谢分享,有时间研究研究...

读书人网 >JavaScript

热点推荐