如何加密JavaScript代码以使其无法解密?

Jam*_*ore 10 javascript encryption

我有一些我需要加密的JavaScript代码,但我想确保没有人可以解密它.

我可以使用哪些工具来执行此操作?

- 编辑 -

我仍然想在我的网站上运行代码,我只是想确保没有其他人可以解密代码.

Pas*_*TIN 24

Javascript代码在浏览器中执行,即在客户端执行,这意味着它必须在客户端未加密.

你能做的"最好的"可能是缩小它,这将使它更难理解 - 并且可能会有一些混淆 - 即使有人真正有动力仍然能够阅读它.

例如,参见YUI Compressor,它可以缩小和混淆JS代码.

  • 但是受虐狂将能够分析代码并理解它. (4认同)
  • @ŠimeVidas - 他们所能做的就是改善格式.他们无法弄清楚一个名为"a"的变量代表什么并将其命名为有用的 - 除非计算机在我打盹时有感知力. (2认同)

Blu*_*eft 10

如果您真的想加密它以便其他任何人都无法解密它,您可以使用任意数量的加密之一.例如,要手动执行,您可以使用TrueCrypt ; 或者以编程方式执行,使用大多数语言中提供的加密库.

但是,如果您真正要求的是如何对代码进行模糊处理以便没有人可以对其进行反向工程,那么答案是: 您不能,不能使用Javascript或任何其他语言.你能做的最好的事就是让反向工程师难以阅读; 为此,有许多工具:


Dan*_*ite 7

没有办法做到这一点.您可以隐藏它并在其中包含一些域检查代码.或者您可以使用服务器端脚本来检查引用域.


jps*_*ons 7

我认为你加密编译二进制混淆.

甚至商用的闭源软件(如Microsoft Office或Adobe Photoshop)都没有加密分发.但是它们被编译为本机机器代码,这使得它们很难进行逆向工程.

JavaScript没有编译二进制文件这样的东西.但是,随着越来越多的浏览器移动到字节码编译,以实现更快的性能,我们可能有一天有一个编译的JavaScript源格式.也许,类似于Python的.py.pyc文件,也许我们将有一个.jsc或JavaScript编译的文件,可以交付给二进制形式的浏览器,在它的JavaScript虚拟机中运行.

尽管如此,还没有这样的事情.即使它确实如此,这只是一个更强烈的混淆.混淆可以防止随意复制和共享,但如果您需要真正保护您的知识产权,请移动逻辑服务器端.