js加密压缩该怎么实现,有源代码和例子的最好

js加密压缩该怎么实现,有源代码和例子的最好,第1张

加密算法可以采用CryptoJS

至于说压缩和编码有很大的关系,可以参考下zip77的编码表

例如:

符号 A B C D E

_____________________________________________

编码 0 10 110111011110

再通过自己定义的编码表进行解码,位数越少越好,我这暂时想到的思路是类似base64

假设a+b小于64那就把a和b的keycode合并,并加上一个开始标记,如果后续的大于64就采用结束标记

压缩的总体思想是低位字符向高位转,甚至允许的话用中文来进行编码压缩,因为中文是由两个半角字符描述的

js的不可读化处理分为三个方面:压缩(compression)、混淆(obfuscation) 和加密(encryption)。

1. 压缩

这一 *** 作的目的,是让最终代码传输量 (不代表代码量, 也不代表文件体积)尽可能小。压缩js的工具,常见的有:YUI Compressor、UglifyJS、Google Closure Compiler 等。

通常在代码压缩的过程中,只改变代码的语法,代码的语义和控制流不会有太大改变。

常见做法是把局部变量缩短化,把一些运算进行等价替换等。代码压缩对于代码保护有一些帮助,但由于语义和控制流基本没变,起不了太大作用。

在压缩层面上,代码不可读只是一种附带伤害,不是最终目的。

2. 混淆

这一 *** 作的目的,是让代码尽可能地不可读,主要用作代码保护。

让代码不可读,增加分析的难度,这是唯一目的。混淆过后文件体积变大一倍也没关系,代码量变多也没关系,运算慢50% 也没关系。

常见的做法有:分离常量、打乱控制流、增加无义代码、检查运行环境如果不对就罢工,等等。

在混淆层面上,代码不可读是最终目的。

值得一提的是,Google Closure Compiler 的 Advance Level Compression 会压缩类和对象的成员,其压缩结果很难分析,也可以认为是一种混淆,但兼容性不太好。

3. 加密

有加密就有解密,意味着加密 *** 作可逆,密文可以明文化。

在Web界,可以称之为加密的东西包括:HTTPS传输、JavaScript实现对称加密或者不对称加密等等。

简单的压缩一般是:删除注释和空白符,替换变量名。

更激进点的做法还包括:删除无用代码,内联函数,等价语句替换等。

有些开发者出于保护代码的原因,还可能会对代码进行混淆处理。

通常深度压缩JS都必须要做的一步就是尽量地缩短变量名,因为一份体积巨大的JS代码,其中的变量名会占去不少空间。

压缩js必须要注意:

1、压缩前的代码格式要标准。因为去掉换行与空格时,所有语句就变成一行,如果你的代码有瑕疵(比如某行少了个分号),那就会导致整个文件报错。当然,现在有的压缩工具已经比较智能了。

2、备份原文件。压缩很可能不会一次成功,一般要多试,多改。

js压缩工具:

1. YUI Compressor

2. Google Closure Compiler


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12066698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存