如何科学的给你所写的JS文件进行加密,防止被破解

已收录   阅读次数: 642
2021-10-2810:58:03 发表评论
摘要

众所周知,网页前段所书写的css和js代码都是在阳光下运行,众人都可以看到,肯定是不如在后端安全,那么如果要给你所写的JS文件上一个安全锁,降低可读性,更重要的是可以避免你所辛苦书写的js脚本被盗。而常见的处理手法,不外乎压缩,加密,混淆等,如果太简单,很容易被破解工具还原破解,因此,需要一种更安全和更复杂的做法和程序,本文以几个例子作为演示,希望能对又需要的人有所启发……

分享至:
如何科学的给你所写的JS文件进行加密,防止被破解

前情提要

众所周知,网页前段所书写的css和js代码都是在阳光下运行,众人都可以看到,肯定是不如在后端安全,那么如果要给你所写的JS文件上一个安全锁,降低可读性,更重要的是可以避免你所辛苦书写的js脚本被盗。而常见的处理手法,不外乎压缩,加密,混淆等,如果太简单,很容易被破解工具还原破解,因此,需要一种更安全和更复杂的做法和程序,本文以几个例子作为演示,希望能对又需要的人有所启发。

内容详情

目前,市面上有不少已经成熟,且运行多年的为js加密提供加密的几个服务商,比如:

达成的效果都是将原始 JavaScript 源代码转换为一种新的表示形式,在未经授权的情况下更难理解、复制、重用和修改。混淆的结果将具有原始代码的确切功能。

除了这些已经完备的在线服务外,还可以自己打造自己的加密服务。

接下来,分别从压缩,加密和混淆来介绍可以利用的工具和方法。

1.压缩

为什么要压缩js文件?有以下好处:

  • 可去除变量名称,让代码不易阅读
  • 此过程为不可逆,无法还原
  • 大幅缩小代码量,缩短网页载入时间,让网站加载更为迅速

有几个在线服务可以实现这些

2.加密

3.混淆

做完这些后,如果觉得代码不够美观,可以使用美化工具,比如:

如果觉得这么多服务要点来点去,比较麻烦,可以试试该网站,支持压缩,加密,混淆,美化,四合一:

以上都是线上工具集合,如果使用node.js,有已经制作好的加密库crypto-js来引用,试举一例:

const CryptoJS = require("crypto-js");

const encryptWithAES = (text) => {
    const passphrase = "123";
    return CryptoJS.AES.encrypt(text, passphrase).toString();
};

const decryptWithAES = (ciphertext) => {
    const passphrase = "123";
    const bytes = CryptoJS.AES.decrypt(ciphertext, passphrase);
    const originalText = bytes.toString(CryptoJS.enc.Utf8);
    return originalText;
};

console.log(encryptWithAES("Hello World"));
console.log(decryptWithAES('U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA='));

这样,就会看到加密的'Hello World'就变成了'U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA=',解密' U2FsdGVkX1/TDn/61/mIePXrMaph+s5fXUvSc9T1gzA='就又变回了‘Hello World’。

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: