(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910390922.0
(22)申请日 2019.05.10
(71)申请人 重庆迅燕科技有限公司
地址 400065 重庆市南岸区崇文路2号重庆
邮电大学创新创业孵化基地512室
(72)发明人 易和阳 戈洋
(74)专利代理机构 北京中济纬天专利代理有限
公司 11429
代理人 石燕妮
(51)Int.Cl.
G06F 21/14(2013.01)
(54)发明名称
一种Node.js的代码加密及底层运行时解密
办法
(57)摘要
本发明涉及一种Node.js的代码加密及底层
运行时解密办法,解决了JS源代码无法得到有效
保护,因而无法作为大型商业应用服务端技术选
型的问题。所述办法包括:加密步骤,通过加密助
手程序调用C编译的加密扩展模块,使用JS混淆
算法、RSA非对称加密方法及模块内部的文本加
密办法对源代码进行加密,并生成运行密钥;解
密步骤,通过执行助手程序加载C编译的底层运
行时解密扩展模块,指定运行密钥和代码入口文
件,利用模块内部的一系列操作解密代码,并通
过V8引擎及模块内部模拟的Node执行环境快速
编译、执行代码。本办法较好地保障了JS源代码
的保密性,可用于Node.js代码保护、防止二次修
改等应用场景。权利要求书1页 说明书4页 附图1页CN 110147656 A 2019.08.20
C N 110147656
A
js代码加密软件权 利 要 求 书1/1页CN 110147656 A
1.一种Node.js的代码加密及底层运行时解密办法,其特征在于:所述Node.js的代码加密及底层运行时解密办法中的Node.js代码的加密办法包括:
步骤一,命令行运行加密助手程序,载入C编译的加密扩展模块,调用模块内部的加密程序,传入待加密文件列表,以及解密的密钥保存路径;
步骤二,加密扩展模块使用JS混淆算法对待加密文件进行代码混淆,生成混淆代码;
步骤三,加密扩展模块生成一套RSA公私钥匙对,利用RSA非对称加解密方法,使用私钥对步骤二生成的混淆代码做第一次加密,生成密文;
步骤四,加密扩展模块使用内部的文本加密算法对步骤三生成的密文做第二次加密,并将二次加密的
密文覆盖源JS文件后生成加密后的JS文件;同时,使用所述文本加密算法对步骤三生成的RSA公钥进行加密,存为解密的密钥文件。
2.根据权利要求1所述的Node.js的代码加密及底层运行时解密办法,其特征在于:Node.js代码的底层运行时解密办法还包括:
步骤五,命令行运行执行助手程序,指定入口文件和解密的密钥文件;
步骤六,Node.js环境下获取Node.js全局变量,Node.js全局变量包括入口文件所在目录、入口文件路径以及CommonJS模块化依赖;
步骤七,执行助手程序载入C编译的底层运行时解密扩展模块,调用运行时解密扩展模块的解密程序,传入入口文件对应路径、解密的密钥文件对应路径、以及步骤六获取的Node.js全局变量;
步骤八,将用于实时解密的钩子函数注入到全局变量的require中,使得入口文件能够引入加密JS模块文件,入口文件仅能够引入能通过步骤十得到的密钥进行解密的加密JS模块文件;
步骤九,运行时解密扩展模块生成全局变量初始化JS代码,并通过V8引擎底层快速通道编译、执行,在快速通道执行环境中模拟Node环境;
步骤十,运行时解密扩展模块读取入口文件和解密的密钥,使用内部的文本解密算法将入口文件和解密的密钥,做第一次解密,得到入口文件的密文和解密后的公钥或私钥;
步骤十一,运行时解密扩展模块使用解密后的密钥或公钥,利用RSA非对称加解密方法,对入口文件的密文进行第二次解密,得到混淆代码;
步骤十二,运行时解密扩展模块通过V8引擎底层快速通道编译、执行步骤十一得到的混淆代码,并在执行完毕后返回执行结果。
3.根据权利要求2所述的Node.js的代码加密及底层运行时解密办法,其特征在于:所述运行时解密扩展模块不是由JS编写的常规模块,而是使用C编写、编译的原生模块。
4.根据权利要求2所述的Node.js的代码加密及底层运行时解密办法,其特征在于:Node.js代码的加密办法加密后的文件无法直接通过Node.js执行,且无法二次修改,仅可以通过执行助手程序配合底层运行时解密扩展进行实时解密执行。
5.根据权利要求2所述的Node.js的代码加密及底层运行时解密办法,其特征在于:解密操作在C编译的运行时解密扩展模块中完成,整个解密过程及解密结果无法被用户观察。
6.根据权利要求2所述的Node.js的代码加密及底层运行时解密办法,其特征在于:C编译的运行时解密
扩展模块能够通过V8引擎底层快速通道模拟Node执行环境,并直接通过该快速通道运行解密后的代码,用户无法对解密代码的运行过程进行干预。
2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论