react native - jsbundle 如何加密

2,970 阅读1分钟

起因

由于 jsbundle 文件能被轻松地查看到源码,可以使用 rn-debundle 查看。 这对于代码的安全来说是非常致命的,所以我们需要对该文件进行加密,使用 AES 128 进行加密,解密也很快。

方案

  1. 修改源码 RCTJavaScriptLoader.mm
+ (void)loadBundleAtURL:(NSURL *)scriptURL 
			 onProgress:(RCTSourceLoadProgressBlock)onProgress 
			 onComplete:(RCTSourceLoadBlock)onComplete {

/**
  从该段代码可知,先同步加载,若失败再异步加载。只需对 NSData 进行解密即可
  根据 scriptURL 解析路径,比如为 .../main.jsbundle?e=pwd,可知需要解密并且密钥是'pwd',可以自行定义规则
 */
}
  1. jsbundle 文件进行 AES 128 加密
  2. 这样加载时,如果需要解密,则拿到密钥进行解密。解密方法参考