CN112269970A - 一种脚本加密方法、装置、服务器及存储介质 - Google Patents

一种脚本加密方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN112269970A
CN112269970A CN202011172152.1A CN202011172152A CN112269970A CN 112269970 A CN112269970 A CN 112269970A CN 202011172152 A CN202011172152 A CN 202011172152A CN 112269970 A CN112269970 A CN 112269970A
Authority
CN
China
Prior art keywords
script
file
algorithm
server
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011172152.1A
Other languages
English (en)
Inventor
雍正
梁炎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sprixin Technology Co ltd
Original Assignee
Sprixin Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sprixin Technology Co ltd filed Critical Sprixin Technology Co ltd
Priority to CN202011172152.1A priority Critical patent/CN112269970A/zh
Publication of CN112269970A publication Critical patent/CN112269970A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供一种脚本加密方法、装置、服务器和存储介质,其中方法包括:获取服务器的硬件信息,将硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数;将私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数;将调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将被加密算法脚本编译为二进制文件。本发明实施例提供的一种脚本加密方法、装置、服务器及存储介质,使得脚本加密后不可反编译,并且明文不可见,可防止篡改,也无需修改脚本运行环境。

Description

一种脚本加密方法、装置、服务器及存储介质
技术领域
本发明涉及数据加密技术领域,尤其涉及一种脚本加密方法及相关设备。
背景技术
Linux是一种操作系统,自动化脚本(shell)是linux日常运维中最为普遍的技术方式。而Python是一种跨平台的计算机程序设计语言,可用于编写shell脚本。
由于脚本语言的易用性和脚本化执行等特点,导致脚本语言的明文可见性很容易造成代码泄露,甚至被恶意篡改而导致安全事故,造成巨大危害和经济损失。现有技术中一般对于脚本加密的方法有以下三种:
(1)代码混淆方法,为各种脚本语言中最常用的手段,一般是将代码中所使用的函数名、类名、变量名转换成无意义的长名,在逻辑中随机插入无效代码,通过这种方式可降低代码可读性。但是这种加密方法实际上代码还是暴露在外的,依然不能有效地防止被拷贝、篡改。
(2)生成可执行文件方法,一般利用pyinstaller或py2exe(PyInstaller、py2exe是能将Python脚本转换成单个可执行文件的程序)将源码打包成二进制可执行文件来达到代码不可见的目的。但是这种加密方法可通过逆向工具进行反编译获取源代码。
(3)定制python解释器方法,一般通过修改和重新编译python解释器,使其只能执行加密后的python脚本文件。但是这种加密方法需要重新部署一个自定制的python环境,但很多情况下用户的业务系统是不允许修改服务器的操作系统环境,并且通过加密后的脚本还是以明文的方式存在,存在被修改导致业务系统无法正常运行的可能性。
发明内容
本发明实施例提供一种脚本加密方法、装置、服务器及存储介质,用以解决现有脚本加密存在的问题。
第一方面,本发明实施例提供一种脚本加密方法,包括:
获取服务器的硬件信息,将所述硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数,所述私钥参数为随机产生的字符串;
将所述私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,所述密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数;
将所述调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将所述被加密算法脚本编译为二进制文件。
可选的,所述获取服务器的硬件信息包括以下一种或多种组合:
获取服务器的CPU标识号;
获取服务器的主板标识号;
获取服务器的硬盘标识号;
获取服务器的网卡物理地址。
可选的,所述硬件信息作为预设加密算法的输入参数生成密钥文件包括:
将所述预设加密算法的伪随机函数将明文和盐值作为输入参数进行散列hash运算,将所述运算得到的结果作为盐值再与所述明文进行所述重复次数的散列hash运算后,生成所述密钥文件,所述明文为所述硬件信息组成字符串后的MD5码,所述MD5码为第一公钥参数,所述盐值为所述私钥参数。
可选的,当执行所述被加密算法脚本时,通过执行主入口的所述调用代码调用所述密码校验脚本,所述密码校验脚本的校验步骤包括:
所述密码校验脚本的密码校验函数会重新获取服务器的硬件信息并将重新获取到的硬件信息转为MD5码作为第二公钥参数;
将所述第二公钥参数和预先保存的所述私钥参数和所述重复次数参数作为所述预设加密算法的输入参数生成临时密钥文件;
所述密码校验函数读取预先生成的所述密钥文件,并将所述临时密钥文件与所述密钥文件做比对,相同则表示校验通过,否则表示校验失败。
可选的,所述二进制文件包括二进制可执行文件和二进制动态库,将所述被加密算法脚本编译为二进制文件包括:
所述需加密算法脚本为.sh脚本时,通过linux的sch命令编译为二进制可执行文件;
所述需加密算法脚本为.py脚本时,通过cython编程语言编译为二进制动态库。
可选的,将所述被加密算法脚本编译为二进制文件之后,还包括:
将所述二进制文件与预先生成的所述密钥文件打包为压缩包作为软件产品发布。
可选的,将所述二进制文件与预先生成的所述密钥文件打包为压缩包作为软件产品发布包括:
删除编译过程中所产生的中间临时文件与源代码文件;
将编译后的所有二进制文件打包为压缩包;
将预先生成的所述密钥文件一同放进所述压缩包内的固定位置以便于被所述密码校验函数读取。
第二方面,本发明实施例提供一种语种识别装置,包括:
加密单元,用于获取服务器的硬件信息,所述硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数,所述私钥参数为随机产生的字符串;
校验单元,用于将所述私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,所述密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数;
编译单元,用于将所述调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将所述被加密算法脚本编译为二进制文件。
第三方面,本发明实施例提供一种服务器,包括处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信,处理器可以调用存储器中的逻辑命令,以执行如第一方面所提供的脚本加密方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的脚本加密方法的步骤。
本发明实施例提供的一种脚本加密方法、装置、服务器及存储介质,通过利用服务器的硬件信息进行加密以及通过将被加密算法脚本编译为二进制文件,使得源代码不可见,有效的防止了代码泄露与恶意篡改,提高了系统运行的安全性。
在其他实施方式,通过采用预设加密算法(如PBKDF2算法),其加密运算的重复次数多达上千次,所以其逆向解密需要耗费很长时间(甚至几百年),从而能有效地防止彩虹表攻击。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的脚本加密方法的流程示意图;
图2为本发明实施例提供的服务器硬件信息的结构示意图;
图3为本发明实施例提供的生成密钥文件的流程示意图;
图4为本发明实施例提供的校验步骤的流程示意图;
图5为本发明实施例提供的脚本加密装置的虚拟结构示意图;
图6为本发明实施例提供的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征向量可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请方案的目的。
数据加密,是指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文,其核心是密码学。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。
常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法,常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES,常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用),常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,脚本语言又被称为扩建的语言,或者动态语言,也是一种编程语言,用来控制软件应用程序,脚本通常是以文本(ASCII)保存,只是在被调用时进行解释或者编译。
首先结合图1对脚本加密方法进行说明,请参阅图1,图1为为本发明实施例提供的脚本加密方法的流程示意图。一种脚本加密方法,可应用于服务器或其他电子设备,包括:
步骤100,获取服务器的硬件信息,将所述硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数,所述私钥参数为随机产生的字符串。
由于每台服务器都有对应且唯一的密钥文件(即key文件),所以被加密算法脚本如果拷贝到其他服务器上执行会因硬件信息受限而无法运行,从而达到防拷贝的目的。此外,将被加密算法脚本编译为二进制文件,使得源代码不可见,有效的防止了代码泄露与恶意篡改,提高了系统运行的安全性。
需要说明的是,需要记录所述密钥文件所保存的路径,以便于后续步骤进行密码校验时或打包成压缩包时被调用。
步骤102,将所述私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,所述密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数。
其中,所述预设脚本为用于根据写入的所述私钥参数与所述重复次数参数生成密码校验脚本的程序。
所述调用代码用于调用所述密码校验脚本,所述密码校验函数用于重新读取服务器硬件信息以便用于生成临时密钥文件与预先生成的密钥文件做比对。
步骤104,将所述调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将所述被加密算法脚本编译为二进制文件。
将所述调用代码植入所述需加密算法脚本的主入口,这样每次执行被加密算法脚本时,程序都会通过所述调用代码调用所述密码校验脚本,所述密码校验脚本执行密码校验函数时,就会重新读取服务器的硬件信息。
可选的,上述步骤100的服务器硬件信息如图2所示,包括以下一种或多种组合:
CPU ID(标识号)、主板ID(标识号)、硬盘ID(标识号)以及网卡MAC(物理地址)等。为了识别服务器的硬件信息,也可以采用其他硬件的标识号,本发明实施例不限于此。
其中,CPU都有一个唯一的ID号,称CPU ID,是在制造CPU的时候,由厂家置入到CPU内部的,CPU ID是终身不变的,只能通过软件读出CPU ID号。主板ID在电脑启动进行自检时,电脑会提示按DEL键进入BIOS(主板)设置的画面,屏幕会显示BIOS ID信息。硬盘ID也是唯一的,可以在电脑的设备管理器选项中选择硬盘查看硬盘ID。网卡MAC(Media AccessControl,介质访问控制)地址是烧录在Network Interface Card(网卡)里的,MAC地址,也叫物理地址或硬件地址,MAC地址具有全球唯一性。
可选的,所述预设加密算法可为PBKDF2(Password-Based Key DerivationFunction 2,简称PBKDF2)算法,也可以是其他加密算法,具体不做限定。PBKDF2简单而言就是将散列hash进行多次重复计算,这个多次重复的次数是可选择的。
可选的,上述将服务器的硬件信息作为预设加密算法的输入参数生成密钥文件的步骤如图3所示,具体包括:
步骤300,将所述预设加密算法的伪随机函数将明文和盐值作为输入参数进行散列hash运算。
其中,明文是指没有加密的文字(或者字符串),即服务器硬件信息组成字符串后的MD5(Message Digest Algorithm MD5,消息摘要算法)码,其可作为加密环节中的第一公钥参数。
其中,盐值是一组随机生成的字符串,该字符串可包含大小字母、阿拉伯数字、特殊字符等,其作为加密环节中的私钥参数。
步骤302,将所述散列hash运算得到的结果作为盐值再与所述明文进行所述重复次数的散列hash运算后,生成所述密钥文件。
其中,重复次数是加密算法中的迭代次数,该次数越高逆向破解难度就越大,同时所需的加密运算时间也就越长。
下面以PBKDF2算法为例进行说明其加密过程:
设DK=PBKDF2(P,S,c,dkLen);
可选项:RPF为基本伪随机函数(hLen表示伪随机函数输出的字节长度)。
输入:
P(口令,可为由服务器硬件信息生成的MD5码,为字节串);
S(盐值,为随机生成的字节串);
c(重复次数,即迭代次数,为正整数);
dkLen(导出密钥的指定字节长度,正整数,最大约(2^32-1)*hLen)。
输出:
DK(导出密钥,长度为dkLen字节)。
步骤:
(1)如果dkLen>(2^32-1)*hLen,输出“derived key too long”并停止。
(2)假设以下l是导出密钥的hLen个字节块的个数,r表示最后一个块的字节数:
l=CEIL(dkLen/hLen);
r=dkLen-(l-1)*hLen。
其中,CEIL(x)是“ceiling”函数,即,大于或等于x的最小整数。
(3)对于导出密钥的每一块,运用函数F于口令P、盐S、迭代次数c和块索引以计算块:
T_1=F(P,S,c,1);
T_2=F(P,S,c,2);
...
T_l=F(P,S,c,l);
其中,函数F定义为基本伪随机函数PRF应用于口令P和盐S的串联和块索引i的前c次循环的异或和。
F(P,S,c,i)=U_1\xor U_2\xor...\xor U_c;
其中,
U_1=PRF(P,S||INT(i));
U_2=PRF(P,U_1);
...
U_c=PRF(P,U_{c-1})。
其中,INT(i)是整数i的四字节编码,高字节在先。
(4)串联各块,抽取前dkLen字节以产生导出密钥DK:
DK=T_1||T_2||...||T_l<0..r-1>。
(5)输出导出密钥DK。
由此可知,根据服务器硬件信息生成密钥文件(即key文件),通过使用上述PBKDF2算法导出密匙DK作为key文件的组成部分。该算法原理是通过一个伪随机函数将明文和一个盐值作为输入参数进行散列hash运算,将结果作为盐值再与明文进行hash多次重复后最终生成密匙,该算法是单向不可逆的,如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟。假如攻击一个由PBKDF2算法加密的密码所需的rainbow table(彩虹表)有1千万条,那么建立所对应的rainbow table所需要的时间就是115天,因此可有效的防止彩虹表攻击。
可选的,当执行所述被加密算法脚本时,通过执行主入口的所述调用代码调用所述密码校验脚本,所述密码校验脚本的校验步骤包括(如图4所示):
步骤400,所述密码校验脚本的密码校验函数会重新获取服务器的硬件信息并将重新获取到的硬件信息转为MD5码作为第二公钥参数。
如果将被加密算法脚本移植到另外一台服务器上执行,那么密码校验脚本的密码校验函数就会重新获取这台服务器的硬件信息,因此步骤400的服务器的硬件信息与步骤100的硬件信息就会不同,所以所述第二公钥参数与所述第一公钥参数就会不同,如果是同一台服务器,那么其硬件信息也相同,第一公钥参数与第二公钥参数也相同。
步骤402,将所述第二公钥参数和预先保存的所述私钥参数和所述重复次数参数作为所述预设加密算法的输入参数生成临时密钥文件。
步骤404,所述密码校验函数读取预先生成的所述密钥文件,并将所述临时密钥文件与所述密钥文件做比对,相同则表示校验通过,否则表示校验失败。
由此可知,所述密码校验脚本可提供一个密码校验函数,当被调用时所述密码校验函数重复执行一遍上述步骤100中的加密过程用于形成临时的key文件(即临时密钥文件),同时到预先保存的路径读取上述步骤100中预先生成的key文件(即密钥文件)并做比对,如果相同则校验通过,不相同则校验失败。
可选的,生成所述密码校验脚本时,会用到上述步骤100中产生的随机私钥与重复次数这两个参数,可以硬编码(硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中)方式作为两个常量写入到预设脚本中。
需要说明当时,所生成的被加密算法脚本需记录其保存的路径,以便于后续需要调用所述被加密算法脚本进行二进制编译和生成压缩包。
可选的,所述二进制文件包括二进制可执行文件和二进制动态库,所述需加密算法脚本可以是.py脚本文件格式或.sh脚本文件格式。所述需加密算法脚本为.sh脚本时,通过linux的sch命令编译为二进制可执行文件;所述需加密算法脚本为.py脚本时,通过cython(Cython是一个快速生成Python扩展模块的工具)编程语言编译为二进制动态库。
在所述需加密算法脚本中植入所述调用代码,即在所述需加密算法脚本的入口函数中插入上述步骤102生成的调用代码,当被加密算法脚本被调用时,程序会优先执行上述步骤101中的密码校验函数的校验步骤(如图4所示),如果校验成功则继续执行,校验失败则脚本退出。
需要说明的时,如果所述被加密算法脚本为多个时,则将所有的被加密算法脚本都编译为二进制可执行文件或二进制动态库,二进制是仅用两个数码(0和1)来表示。
由于二进制的不可见性,有效的防止了代码泄露与恶意篡改,再加上预先植入了密码校验功能还能防止拷贝。
最后,将所述被加密算法脚本编译为二进制文件之后,还包括:
将步骤104生成的全部二进制文件和上述步骤100生成的密钥文件(即key文件)一起进行压缩打包,所生成的压缩包作为软件产品发布,可被部署到服务器或其它电子设备上使用。
可选的,上述将所述二进制文件与预先生成的所述密钥文件打包为压缩包作为软件产品发布的步骤包括:
删除编译过程中所产生的中间临时文件与源代码文件;
将编译后的所有二进制文件打包为压缩包;
将预先生成的所述密钥文件一同放进所述压缩包内的固定位置以便于被所述密码校验函数读取。
综上所述,将需加密算法脚本实现加密过程以形成作为软件产品的压缩包,结合服务器硬件信息使用PBKDF2算法单项加密,能有效的防止彩虹表攻击,而生成的密码校验脚本在需加密算法脚本中植入调用代码使得被加密算法脚本运行时需要授权,可有效防止拷贝,通过将被加密算法脚本编译成二进制文件的形式以防止代码泄露和篡改,并且无需修改系统的运行环境。
基于上述任一实施例,图5为本发明实施例提供的脚本加密装置的结构示意图,如图5所示,所述脚本加密装置500包括加密单元502、校验单元504以及编译单元506。
其中,加密单元502用于执行步骤100,获取服务器的硬件信息,并将所述硬件信息通过预设加密算法生成密钥文件,所述密钥文件包含公钥参数、私钥参数以及所述预设加密算法的重复次数参数。
其中,校验单元504用于执行步骤102,将所述私钥参数与所述重复次数参数写入预设脚本得到密码校验脚本,所述密码校验脚本包括密码校验函数和所述密码校验函数对应的调用代码。
其中,编译单元506用于执行步骤104,将需加密算法脚本植入所述调用代码得到被加密算法脚本,将所述被加密算法脚本编译为二进制动态库。
图6是本发明实施例提供的一种服务器结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)602(例如,一个或一个以上处理器)和存储器614,一个或一个以上存储应用程序612或数据610的存储介质606(例如一个或一个以上海量存储设备)。其中,存储器614和存储介质606可以是短暂存储或持久存储。存储在存储介质606的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。
更进一步地,中央处理器602可以设置为与存储介质606通信,在服务器600上执行存储介质606中的一系列指令操作。
服务器600还可以包括一个或一个以上电源604,一个或一个以上有线或无线网络接口616,一个或一个以上输入输出接口618,和/或,一个或一个以上操作系统608,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由脚本加密方法所执行的步骤可以基于该图6所示的服务器结构。
此外,上述的存储器632中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括上述所述脚本加密方法的步骤。
本发明实施例还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述所述脚本加密方法的步骤。
本发明实施例还提供了一种终端设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,所述程序代码由所述处理器加载并执行以实现上述所述脚本加密方法的步骤。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行上述所述脚本加密方法的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种脚本加密方法,其特征在于,包括:
获取服务器的硬件信息,将所述硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数,所述私钥参数为随机产生的字符串;
将所述私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,所述密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数;
将所述调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将所述被加密算法脚本编译为二进制文件。
2.根据权利要求1所述的脚本加密方法,其特征在于,所述获取服务器的硬件信息包括以下一种或多种组合:
获取服务器的CPU标识号;
获取服务器的主板标识号;
获取服务器的硬盘标识号;
获取服务器的网卡物理地址。
3.根据权利要求2所述的脚本加密方法,其特征在于,将所述硬件信息作为预设加密算法的输入参数生成密钥文件包括:
将所述预设加密算法的伪随机函数将明文和盐值作为输入参数进行散列hash运算,所述明文为所述硬件信息组成字符串后的MD5码,所述MD5码为第一公钥参数,所述盐值为所述私钥参数;
将所述散列hash运算得到的结果作为盐值再与所述明文进行所述重复次数的散列hash运算后,生成所述密钥文件。
4.根据权利要求1所述的脚本加密方法,其特征在于,当执行所述被加密算法脚本时,通过执行主入口的所述调用代码调用所述密码校验脚本,所述密码校验脚本的校验步骤包括:
所述密码校验脚本的密码校验函数会重新获取服务器的硬件信息并将重新获取到的硬件信息转为MD5码作为第二公钥参数;
将所述第二公钥参数和预先保存的所述私钥参数和所述重复次数参数作为所述预设加密算法的输入参数生成临时密钥文件;
所述密码校验函数读取预先生成的所述密钥文件,并将所述临时密钥文件与所述密钥文件做比对,相同则表示校验通过,否则表示校验失败。
5.根据权利要求1所述的脚本加密方法,其特征在于,所述二进制文件包括二进制可执行文件和二进制动态库,将所述被加密算法脚本编译为二进制文件包括:
所述需加密算法脚本为.sh脚本时,通过linux的sch命令编译为二进制可执行文件;
所述需加密算法脚本为.py脚本时,通过cython编程语言编译为二进制动态库。
6.根据权利要求1所述的脚本加密方法,其特征在于,将所述被加密算法脚本编译为二进制文件之后,还包括:
将所述二进制文件与预先生成的所述密钥文件打包为压缩包作为软件产品发布。
7.根据权利要求6所述的脚本加密方法,其特征在于,将所述二进制文件与预先生成的所述密钥文件打包为压缩包作为软件产品发布包括:
删除编译过程中所产生的中间临时文件与源代码文件;
将编译后的所有二进制文件打包为压缩包;
将预先生成的所述密钥文件一同放进所述压缩包内的固定位置以便于被所述密码校验函数读取。
8.一种脚本加密装置,其特征在于,包括:
加密单元,用于获取服务器的硬件信息,所述硬件信息作为预设加密算法的输入参数生成密钥文件,并保存生成所述密钥文件所需的私钥参数和加密运算的重复次数,所述私钥参数为随机产生的字符串;
校验单元,用于将所述私钥参数和所述重复次数作为常量写入预设脚本,生成密码校验脚本,所述密码校验脚本包括用于调用所述密码校验脚本的调用代码和用于读取服务器硬件信息的密码校验函数;
编译单元,用于将所述调用代码植入需加密算法脚本的主入口得到被加密算法脚本,并将所述被加密算法脚本编译为二进制文件。
9.一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项所述的脚本加密方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的脚本加密方法的步骤。
CN202011172152.1A 2020-10-28 2020-10-28 一种脚本加密方法、装置、服务器及存储介质 Pending CN112269970A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011172152.1A CN112269970A (zh) 2020-10-28 2020-10-28 一种脚本加密方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011172152.1A CN112269970A (zh) 2020-10-28 2020-10-28 一种脚本加密方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN112269970A true CN112269970A (zh) 2021-01-26

Family

ID=74345680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011172152.1A Pending CN112269970A (zh) 2020-10-28 2020-10-28 一种脚本加密方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN112269970A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112883391A (zh) * 2021-02-19 2021-06-01 广州橙行智动汽车科技有限公司 数据保护方法、装置以及电子设备
CN114461991A (zh) * 2021-12-23 2022-05-10 麒麟软件有限公司 一种基于Linux操作系统的脚本加密方法
CN114745112A (zh) * 2022-04-15 2022-07-12 北京凝思软件股份有限公司 根密钥派生方法、装置、电子设备及存储介质
CN114785495A (zh) * 2022-04-01 2022-07-22 安天科技集团股份有限公司 密钥派生方法、数据加密方法、服务器、电子设备及存储介质
CN115442090A (zh) * 2022-08-22 2022-12-06 中国银联股份有限公司 一种应用于脚本的敏感信息获取方法及装置
CN115659292A (zh) * 2022-12-28 2023-01-31 北京大学 脚本代码的加密方法及装置
CN116760631A (zh) * 2023-08-09 2023-09-15 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992987A (zh) * 2017-12-29 2019-07-09 深圳市融汇通金科技有限公司 基于Nginx的脚本文件保护方法、装置及终端设备
CN111143877A (zh) * 2019-12-20 2020-05-12 国能日新科技股份有限公司 加密基于Python的风光预测算法文件的方法及装置
CN111666078A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 源码加固方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992987A (zh) * 2017-12-29 2019-07-09 深圳市融汇通金科技有限公司 基于Nginx的脚本文件保护方法、装置及终端设备
CN111143877A (zh) * 2019-12-20 2020-05-12 国能日新科技股份有限公司 加密基于Python的风光预测算法文件的方法及装置
CN111666078A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 源码加固方法、装置、计算机设备及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112883391A (zh) * 2021-02-19 2021-06-01 广州橙行智动汽车科技有限公司 数据保护方法、装置以及电子设备
CN112883391B (zh) * 2021-02-19 2022-10-14 广州橙行智动汽车科技有限公司 数据保护方法、装置以及电子设备
CN114461991A (zh) * 2021-12-23 2022-05-10 麒麟软件有限公司 一种基于Linux操作系统的脚本加密方法
CN114785495A (zh) * 2022-04-01 2022-07-22 安天科技集团股份有限公司 密钥派生方法、数据加密方法、服务器、电子设备及存储介质
CN114745112A (zh) * 2022-04-15 2022-07-12 北京凝思软件股份有限公司 根密钥派生方法、装置、电子设备及存储介质
CN115442090A (zh) * 2022-08-22 2022-12-06 中国银联股份有限公司 一种应用于脚本的敏感信息获取方法及装置
CN115659292A (zh) * 2022-12-28 2023-01-31 北京大学 脚本代码的加密方法及装置
CN116760631A (zh) * 2023-08-09 2023-09-15 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统
CN116760631B (zh) * 2023-08-09 2023-10-31 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统

Similar Documents

Publication Publication Date Title
CN112269970A (zh) 一种脚本加密方法、装置、服务器及存储介质
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN105683990B (zh) 用于保护动态库的方法和装置
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
US9230123B2 (en) Apparatus for tamper protection of application code based on self modification and method thereof
CN104932902B (zh) 一种生成apk文件的方法及终端
US20150095653A1 (en) Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
JP2012526310A (ja) ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護
CN108259479B (zh) 业务数据处理方法、客户端与计算机可读存储介质
CN111191195A (zh) 一种用于保护apk的方法和装置
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
WO2023029447A1 (zh) 模型保护方法、装置、设备、系统以及存储介质
CN111143877B (zh) 加密基于Python的风光预测算法文件的方法及装置
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
WO2022078366A1 (zh) 应用保护方法、装置、设备及介质
CN107257282A (zh) 一种基于rc4算法的代码全包加密方法
CN112035803B (zh) 一种基于Windows平台软件的保护方法及装置
CN107169370A (zh) 可执行文件的加密方法及加密装置
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
CN109995534B (zh) 一种对应用程序进行安全认证的方法和装置
CN114547653B (zh) 开发环境的加密方法、解密方法及装置、设备和介质
CN115310057A (zh) 防反编译的加密、解密方法、装置、设备和存储介质
CN115051788A (zh) 模型加密方法、装置、存储介质以及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination