js压缩后怎么还原(压缩过的js怎么还原)

js压缩后怎么还原(压缩过的js怎么还原)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

JS代码压缩

本文分享一种技术。用于实现JS代码压缩。

该技术使用LZW算法。

LZW算法又叫“串表压缩算法”。简而言之。通过建立一个字符串表。用较短的代码来表示较长的字符串来实现压缩。

具体的实现方法是:提取原始文本文件数据中的不同字符。基于这些字符创建一个编译表。然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符。从而减少原始数据大小。应该注意的是。我们这里的编译表不是事先创建好的。而是根据原始文件数据动态创建的。解码时还要从已编码的数据中还原出原来的编译表。

JS代实现LZW算法:

//LZW压缩function lzw_encode(s) { let dict = {}; let data = (s + '').split(''); let out = []; let currChar; let phrase = data[0]; let code = 256; for (let i = 1。 l = data.length; i < l; ++i) { currChar = data[i]; if (dict[phrase + currChar] != null) { phrase += currChar; } else { out.push(phrase.length > 1 && dict[phrase] || phrase.charCodeAt(0)); dict[phrase + currChar] = code; ++code; phrase = currChar; } } out.push(phrase.length > 1 && dict[phrase] || phrase.charCodeAt(0)); for (let i = 0。 l = out.length; i < l; ++i) { out[i] = String.fromCharCode(out[i]); } return out.join('');}//LZW解压function lzw_decode(s) { let dict = {}; let data = (s + '').split(''); let currChar = data[0]; let oldPhrase = currChar; let out = [currChar]; let code = 256; let phrase; for (let i = 1。 l = data.length; i < l; ++i) { let currCode = data[i].charCodeAt(0); if (currCode < 256) { phrase = data[i]; } else { phrase = dict[currCode] && dict[currCode] || (oldPhrase + currChar); } out.push(phrase); currChar = phrase.charAt(0); dict[code] = oldPhrase + currChar; ++code; oldPhrase = phrase; } return out.join('');}

使用。压缩和解压JS代码:

var str=`function get_copyright(){ var domain = "jshaman.com"; var from_year = 2017; var copyright = "(c)" + from_year + "-" + (new Date).getFullYear() + "。" + domain; return copyright;}console.log(get_copyright());`console.log("原始长度:"。str.length);console.log("压缩后长度:"。lzw_encode(str).length);console.log("解压后长度:"。lzw_decode(lzw_encode(str)).length);console.log()console.log(" eval执行压缩代码:")eval(lzw_decode(lzw_encode(str)));console.log()console.log(" constructor执行压缩代码:");[].constructor.constructor(lzw_decode(lzw_encode(str)))();console.log()

运行效果:

js压缩后怎么还原(压缩过的js怎么还原)

上面同时演示了运行效果。

因为压缩的是JS代码。所以解压后当然运行。才能实现原本JS代码的功能。

实际应用时。如果不想让他人知道使用了什么样的算法。可以再对代码进行混淆加密。

比如这部分代码:

js压缩后怎么还原(压缩过的js怎么还原)

用JShaman进行代码加密:

js压缩后怎么还原(压缩过的js怎么还原)

加密后的代码成为:

js压缩后怎么还原(压缩过的js怎么还原)

加密后的JS代码运行完全不受影响。与之前一样使用:

js压缩后怎么还原(压缩过的js怎么还原)

分享到 :
相关推荐

网络连接不稳定是怎么回事

大家好,今天来介绍网络连接不稳定是怎么回事(天下布魔网络连接不稳定怎么办)的问题,以...

jsp文件中文乱码怎么解决(eclipse导入文件后乱码怎么改)

1、jsp文件中文乱码怎么解决JSP文件中文乱码怎么解决JSP(JavaSer[&h...

python list remove(s.find()函数是什么意思)

1、pythonlistremovePython中的列表(list)是一种非常[&h...

python整除怎么写(python整除运算怎么弄)

1、python整除怎么写Python中可以使用“//”运算符进行整除操作。整除是[...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注