js为客户端脚本,服务器端无法加密,即使加密也要将解密密钥通过某种方式发送客户端,用户接受到这个密钥,完全可以自己手动解密,支持成本较高,但如果你使用的是比较流行的加密方法,网上很容易找到自动解密的方法。
js无法彻底加密,换句话说就是只要浏览器能够解析,人就总有办法能够将代码还原
即使你使用AES、RSA等算法对代码进行加密,如果浏览器能正常执行,必须有相应的密钥,密钥就得发送给客户端,当然用户知道了密钥,知道了你的算法,就可以解密了
打个比方,你写的js代码就好比你存在保险柜中的现金,现在你必须委托他人(浏览器)将现金取出,那你就得把钥匙(解密的密钥)给那个代理人(浏览器),这样才可以把现金取出(执行JS),而你把钥匙给代理人的过程,其他人可以截获(网络传密钥被用户抓取,事实上浏览器能看到的东西,用户都能看到),或者你把保险柜密码大声的告诉给你的代理人(将密钥直接写在文件中,这样也会被用户看到)。不管怎么说,你的解密关键点都要传给客户端,所以如果有人想要破解,是肯定可以做到的,只是成本问题。
说明:如果你写的不是病毒等恶意代码的话使用普通混淆后,基本没人愿意去解。只有你写的是影响很广的代码(通常是恶意代码),才会有很多人去研究,毕竟混淆后的代码解开也不如原始代码易读