electron 代码加密的一种实现
electron打包后所有资源都会放到asar压缩文档里面,这个文件是可以被解压的。
打包时虽然可以对js代码进行混淆(terser-webpack-plugin),但是这个方式只是增加了阅读难度,并没有实现代码的加密。
对于有保密需求的逻辑最好的方式就是使用(N_API)实现。
主进程和渲染进程代码加密的一种实现:
1、主进程和渲染进程分别生成唯一的js文件(压缩和混淆):main.js和renderer.js
2、在生成完成后打包之前对renderer.js文件进行可逆加密(如AES)
3、打开窗口时读取renderer.js文件进行解密并运行(executeJavaScript)
这种方式也有缺陷,加解密函数都暴露在main.js文件里面,简单的混淆并不可靠,最后可以对main.js再次进行(加密)
具体过程:
1、对renderer.js的生成不要自动插入html页面:inject配置项
2、在build完成时加密renderer.js
3、在主进程创建窗口完成时执行executeJavaScript方法加载renderer.js