JS加密与混淆
· 阅读需 3 分钟
JS加密与混淆相关的总结和记录
加密
- 对称加密算法(如AES)
- 使用方式:客服端和服务器端共同确定一个用来加密和解密的秘钥。然后客服端在请求服务器是通过该秘钥对数据进行加密,服务器端在接收到请求之后使用该秘钥对数据进行解密。
- 优势:加密效率高
- 缺点:秘钥需要共享给客户端,具有泄露的风险
- 非对称加密算法(如RSA)
- 使用方式:服务器端生成公钥和私钥,把私钥发送给客户端。客服端在请求服务器是,通过公钥对数据进行加密。服务器端接收到请求之后,使用私钥对加密的数据进行解密。
- 优势:不需要共享私钥,避免了私钥泄露的风险。
- 劣势:加密效率低,数据量大是较为耗时
实际场景中,一般使用如下策略进行加密:
- 服务器端通过RSA生成公钥,然后把公钥给客户端。
- 客服端先随机生成AES秘钥,然后用AES秘钥加密请求数据,用RSA公钥对AES秘钥进行加密,然后把加密之后的AES秘钥和加密后的请求数据一起发送给服务器。
- 服务器收到请求之后,先用RSA私钥解密出AES秘钥,然后用AES秘钥对请求数据进行解密,获取请求数据。
混淆
可以使用JavaScript obfuscator库(https://github.com/javascript-obfuscator/javascript-obfuscator)完成代码代码混淆