日期:2014-05-16  浏览次数:20448 次

求一个js加密解密的方法
我现在是用escape和unescape处理的,但是英文和数字的都不会被处理,转成16进制的又会被人一眼看出来。
以前看到过个方法可以把任何字符串(包含中文)加密成 字母、数字、标点符号等文本类型的,现在找不到这个方法了,有人知道吗?

------解决方案--------------------
搜索 javascript base64
------解决方案--------------------
我也尝试过同样的问题,一直对JS代码不能完全加密而郁闷。我试过比较好的比如JSEncoder 还有一个javascript-obfuscator-setup.exe的付费软件,是我见过最好的加密。另外有好多页面上有联机加密解密的东东,随便拿一个来就可用。
不过我发现那些东东都不是很好用,因为它们基本均是base64+字典+词分割替换而已,其中词分割采用正则表达式整的,因此对代码的编写有不同的要求。如果不满足要求的话,代码加密压缩出来后,不一定能够完全正常运行。所以,如果LZ只是为了挡住一部分人,不如自己写一个还好,把代码中所有不必要的空格、换行去掉,估计就能挡住大部分人。

------解决方案--------------------
js不会,下一步学习对象
------解决方案--------------------
JScript code

!function() {
    var x = function(x) { return (x + x).slice(1,3); };
    window.encrypt = function (s) {
        return function() { return this; }()
        ['\x65\x6e\x63\x6f\x64\x65\x55\x52\x49\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74'](s).replace(/%(..)|([^%])/g, function($0, $1, $2) {
            return x($1 || ('0'+$2.charCodeAt(0).toString(16)).slice(-2));
        });
    };
    window.decrypt = function decrypt(s) {
        return function() { return this; }()
        ['\x64\x65\x63\x6f\x64\x65\x55\x52\x49\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74'](s.replace(/../g, function($0) {
            return '%'+x($0);
        }));
    };
}();

alert(encrypt('中文032309u'));
alert(decrypt(encrypt('中文032309u')));