跳到主要内容

JS加密与混淆

· 阅读需 3 分钟

JS加密与混淆相关的总结和记录

加密

  • 对称加密算法(如AES)
    • 使用方式:客服端和服务器端共同确定一个用来加密和解密的秘钥。然后客服端在请求服务器是通过该秘钥对数据进行加密,服务器端在接收到请求之后使用该秘钥对数据进行解密。
    • 优势:加密效率高
    • 缺点:秘钥需要共享给客户端,具有泄露的风险
  • 非对称加密算法(如RSA)
    • 使用方式:服务器端生成公钥和私钥,把私钥发送给客户端。客服端在请求服务器是,通过公钥对数据进行加密。服务器端接收到请求之后,使用私钥对加密的数据进行解密。
    • 优势:不需要共享私钥,避免了私钥泄露的风险。
    • 劣势:加密效率低,数据量大是较为耗时

实际场景中,一般使用如下策略进行加密:

  • 服务器端通过RSA生成公钥,然后把公钥给客户端。
  • 客服端先随机生成AES秘钥,然后用AES秘钥加密请求数据,用RSA公钥对AES秘钥进行加密,然后把加密之后的AES秘钥和加密后的请求数据一起发送给服务器。
  • 服务器收到请求之后,先用RSA私钥解密出AES秘钥,然后用AES秘钥对请求数据进行解密,获取请求数据。

混淆

可以使用JavaScript obfuscator库(https://github.com/javascript-obfuscator/javascript-obfuscator)完成代码代码混淆

参考资料