Javascript代码的混淆与加密的例子

本文只是提一些关于混淆与压缩的想法,可能会偶发抽风型更新。

混淆就是尽量让JS代码看不懂。

JS的变量名可以以字母或特殊符号开头,但不能以数字开头.

1a不是一个合法的变量名,但_1a就是

JS的变量名开头能用的特殊符号只有两个:$和_.前者被jquery等发扬光大,后者则由underscore占据.

混淆可以让格式良好的代码都看不懂,就是把变量名函数名通通变成_1,_2,_11,_a,_1a2c这种(easyui就是这么搞的).

相比a,b,c,我觉得_1,_2,_3这种名称更让人混淆,虽然后者更长.
easyui的混淆,做得还不算太绝。虽然他所有变量都是_+数字这样的,但重名的变量却不算多,梳理一下还是可以看懂的。

要做得更绝,可以人工使用大量同名变量————因为JS的不同作用域里,同名变量并不会冲突。

压缩加密
很多人认为两者是一样的,所以我就都放一起了。反正就是指:让代码量变得更少。

要想压缩得更小,还要靠一些特别的编码格式—-不过这些格式一般也是良好的编码格式,并不是为了压缩了故意这样做.

用一个var加,分隔声明多个连续变量.

如:

1
var a = 1,b = 2, c={},d='sss',e=[1,2,3];
因为压缩工具不会把多个var自动合并成一个.

压缩工具不会把true和false做处理。在不严谨的场景,你可以把true写成1,false写成0.或把true改为!0,false改为!1(有的压缩工具会自动改)

如果多处用到undefined或null,可用变量预先保存他们

压缩工具不会把变量本地化,但把变量本地化后再压缩可以缩减很大的字节量.所以推荐.

本地化(其实叫做私有化)即你有一个函数,里面多次调用了外部的a.b.c方法(或属性),那么你就应该把他存下来,

var c = a.b.c;
c...

极端压缩法

将命名空间调用链里的.式调用,改成[]式调用。如:页面中有好几处这样的调用:

a.replace(...)
bbb.replace(...)
c.replace(...).replace(...)

则可以改成:

var r = 'replace';
a[r](...)
bbb[r](...)
ccc[r](...)[r](...)

虽然多了一个变量,但压缩后会减少不少字节(而且让代码更看不懂了)

时间: 2024-09-18 04:36:07

Javascript代码的混淆与加密的例子的相关文章

Javascript代码混淆综合解决方案

javascript|解决 Javascript 代码混淆的目的 Javascript 是一种解释执行的脚本语言,主要应用于 Web 领域的客户端的浏览器中:由于 Javascript 解释执行的特性,代码必须明文下载到客户端,并且可以很容易的进行调试,使得 Javascript 代码的保护非常困难: 不同的人对 Javascript 代码的保护有不同的看法:有的人辛苦努力的代码,却可以被竞争对手轻易获得,他们就非常希望能有保护 Javascript 代码的方案,但现有的方案可能无法满足他们的要

Javascript代码混淆综合解决方案-Javascript在线混淆器_javascript技巧

 文章来源:javascriptOnlineObfuscator">http://www.BizStruct.cn/JavascriptOnlineObfuscator Javascript 代码混淆的目的 Javascript 是一种解释执行的脚本语言,主要应用于 Web 领域的客户端的浏览器中:由于 Javascript 解释执行的特性,代码必须明文下载到客户端,并且可以很容易的进行调试,使得 Javascript 代码的保护非常困难: 不同的人对 Javascript 代码的保护有不

Javascript脚本实现静态网页加密实例代码_javascript技巧

Javascript脚本实现静态网页加密,阅读Javascript脚本实现静态网页加密,前两天看见有人问静态网页加密问题,就写了这个代码思路:加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入js变量中.解密时:询问密钥,然后操作同加密 前两天看见有人问静态网页加密问题,就写了这个代码 思路: 加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入js变量中. 解密时:询问密钥,然后操作同加密. 因为用了md5,个人

C#用Dotfuscator混淆器加密代码的方法

C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代码.变量名修改.字符串加密等功能. 我使用的是 Dotfuscator 4.2 PRO 版本,有需要的可以到网上搜索下载 Dotfuscator Professional Edition 4.9破解版本.安装 Dotfuscator 好 打开界面,有几个需要配置的地方: Options.Input.

一个可逆加密的例子

加密     下面的代码实现了一个可逆加密的方法.可以用于对Cookie,QueryString等加密处理.      查看例子      VB.net代码      <%@ Page Language="vb" AutoEventWireup="false" Codebehind="EncString.<a href="http://dev.21tx.com/web/asp/" target="_blank&qu

JavaScript代码应该放在HTML代码哪个位置比较好?_javascript技巧

在哪里放置 JavaScript 代码? 通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方.但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所述. 放置于<head></head>之间 将 JavaScript 代码放置于 HTML 文档的 <head></head> 标签之间是一个通常的做法.由于 HTML 文档是由浏览器从上到下依次载入的

Javascript实现摩斯码加密解密

摩尔斯电码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号,是由美国人萨缪尔·摩尔斯在1836年发明. 每一个字符(字母或数字)对应不同的序列(由点和划组成). 一般来说,任何一种能把书面字符用可变长度的信号表示的编码方式都可以称为摩尔斯电码. 但现在这一术语只用来特指两种表示英语字母和符号的摩尔斯电码:美式摩尔斯电码和国际摩尔斯电码.下面内容仅针对国际摩尔斯电码. 字母.数字.标点.特殊字符与摩斯码对照表 字母 字母 摩斯码 字母 摩斯码 字母 摩斯码 字母 摩

在HTML中插入JavaScript代码的示例

  这篇文章主要介绍了在HTML中插入JavaScript代码的示例,嵌套在HTML代码中是JavaScript的基本功能,需要的朋友可以参考下 在HTML文档中的任何地方可包括JavaScript代码.但也有以下的最佳方法来包含JavaScript在HTML文件. 在 ... 部分. 在 ... 部分. 在... 和... 部分. 脚本和外部文件,然后包括在... 部分. 在下面的章节中,我们将看到如何可以包含JavaScript方式的不同: 在JavaScript的... 部分: 如果你想在

使用AOP改善javascript代码

  这篇文章主要介绍了使用AOP改善javascript代码,需要的朋友可以参考下 Aop又叫面向切面编程,用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被严重忽视的技术点,这篇就通过下面这几个小例子,来说说AOP在js中的妙用. 1, 防止window.onload被二次覆盖. 2,无侵入的统计代码. 3, 分离表单请求和校验. 4,给ajax请求动态添加参数. 5,职责链模式. 6, 组合代替继承. 先给出before和after这2个"切面"函数. 顾名思义,就