一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种保护Python代码的加密方法与流程

2022-03-26 15:57:05 来源:中国专利 TAG:

一种保护python代码的加密方法
技术领域
1.本发明属于加密算法领域,涉及一种加密方法。


背景技术:

2.python作为一种开发效率极高的编程语言,能够极大地提高软件实现的速度。然而python解析器的开源性导致在发布给用户时,其源代码无法得到有效的保护。用户可以阅读甚至篡改python源代码。其后果是,python代码中的一些敏感信息,例如账号和密钥暴露给用户,给软件使用的安全性带来巨大风险。另外,用户可以通过篡改源代码来实现作弊。因此,对python代码实现加密来提高软件的安全性就显得尤为重要。
3.目前,对python代码进行加密有以下几种方法:(1)将python代码生成二进制的.pyc文件。然而已经有现成的反编译工具,可以直接破解。(2)代码混淆。使得代码的可读性变得更差。由于python语言的缩进特性,混淆后代码结构未发生变化,现存的混淆工具混淆程度低。另外对于账号和密钥这类数据难以依靠混淆实现隐藏。(3)使用py2exe打包成exe文件。缺点是只能在windows上运行。(4)将python代码编译成cython。缺点是cython不支持一小部分python代码。(5)修改python解析器。缺点是操作难度高。


技术实现要素:

4.(一)本发明的目的
5.本发明的目的在于提供一种保护python代码的加密方法,该方法集成了rsa加密算法和md5信息摘要算法,实现对python代码在发布后的加密保护。
6.(二)本发明的技术方案
7.为了达到上述目的,本发明的技术方案如下:
8.一种保护python代码的加密方法,在c 调用python辅助代码前,使用信息摘要算法来校验python辅助代码是否被改动,若校验通过,则调用python辅助代码且传入密钥。
9.信息摘要算法可以为md5信息摘要算法,所述md5信息摘要算法,用于对python辅助代码进行校验,防止其被篡改后监听rsa密钥。
10.密钥可以为rsa密钥。所述rsa加密算法,用于对python主体代码进行加密。
11.python辅助代码,用于对python主体代码进行rsa解密并执行。
12.c 代码,用于对python辅助代码进行md5校验。
13.该加密方法进一步包括:
14.步骤一:对python主体代码进行rsa加密;
15.步骤二:使用python辅助代码对python主体代码进行rsa解密并执行;
16.步骤三:使用c 对python辅助代码进行md5校验,校验通过后向python辅助代码中传入rsa密钥;
17.步骤四:对c 进行编译生成软件。
18.有益效果:
19.该方法流程简单:使用rsa和md5两个算法,并使用python辅助代码和c 编译工具。
20.该方法使用方便:发布软件时只需设置rsa和md5两个密钥。
21.应用广泛:该方法可应用于支持python和c 的所有系统。
附图说明
22.图1本发明python代码加密方法架构图;
具体实施方式
23.由于python解析器的开源性,python代码在运行时是明文形式。实现软件功能的代码为python主体代码。在发布时,对需要保护的python主体代码使用rsa加密算法加密成密文。用户拿不到rsa密钥,无法对密文进行解密,从而实现了对python主体代码的保护。在软件运行时,需要将python主体代码的密文进行解密才能被python解析器执行。因此,使用python辅助代码先对python主体代码的密文进行解密,然后将解密得到的python主体代码进行执行。
24.显然易见这两点:(1)python辅助代码是明文,否则python辅助代码也无法运行;(2)python辅助代码需要相应的rsa密钥才能对python主体代码的密文进行解密。
25.因此,rsa密钥不能直接放在python辅助代码中,否则会造成rsa密钥暴露给用户。本发明方法的做法为:将rsa密钥放到c 代码中,在c 调用python辅助代码时将rsa密钥传进去,然后对c 进行编译得到可执行文件。这样rsa密钥最终被编译到c 的可执行文件中,这和其它c 编译的软件安全性是一样的。
26.另外,由于python辅助代码是明文,用户可以对python辅助代码进行篡改。因此用户可以修改python辅助代码以获取rsa密钥。本发明方法的做法为:为了防止用户对python辅助代码进行篡改,在c 调用python辅助代码时会使用md5信息摘要算法来校验python辅助代码是否被改动,只有校验通过时才会传入密钥。
27.总结:通过本发明方法,将python主体代码进行rsa加密,rsa密钥最终被编译到c 的可执行文件中。因此软件在运行时可以使用rsa密钥解密代码并执行。但由于用户获取不到rsa密钥,因此无法得到python主体代码的明文。
28.参见图1,具体的过程如下:
29.步骤一:对python主体代码进行rsa加密;
30.步骤二:使用python辅助代码对python主体代码进行rsa解密并执行;
31.步骤三:使用c 对python辅助代码进行md5校验,通过后传入rsa密钥;
32.步骤四:对c 进行编译生成软件。
33.说明:
34.rsa是一种可逆的加解密算法,可以根据密钥将明文转成密文,也可反之解密成明文。本发明方法可使用任何一种可逆的加解密算法,不局限于rsa算法。
35.md5是一种信息摘要算法,用来确保信息的完整一致性。当信息被篡改时,其校验值无法匹配。本发明方法可使用任何一种信息摘要算法,不局限于md5算法。
36.c 用来调用python代码,并且可以将c 编译成可执行文件。本方法可使用任何
一种可调用python代码并且可以编译(难以逆向编译)成可执行文件的语言,不局限于c 语言。


技术特征:
1.一种保护python代码的加密方法,其特征在于,在c 调用python辅助代码前,使用信息摘要算法来校验python辅助代码是否被改动,若校验通过,则调用python辅助代码且传入密钥。2.如权利要求1所述的加密方法,其特征在于,信息摘要算法可以为md5算法。3.如权利要求2所述的加密方法,其特征在于,密钥可以为rsa密钥。4.如权利要求3所述的加密方法,其特征在于,该加密方法进一步包括:步骤一:对python主体代码进行rsa加密;步骤二:使用python辅助代码对python主体代码进行rsa解密并执行;步骤三:使用c 对python辅助代码进行md5校验,校验通过后向python辅助代码中传入rsa密钥;步骤四:对c 进行编译生成软件。

技术总结
本发明属于加密算法领域,公开了一种保护Python代码的加密方法。该方法在C 调用Python辅助代码时,使用信息摘要算法来校验Python辅助代码是否被改动,若校验通过,将密钥传进Python辅助代码中,然后对C 进行编译得到可执行文件。该方法流程简单:使用RSA和MD5两个算法,并使用Python辅助代码和C 编译工具;该方法使用方便:发布软件时只需设置RSA和MD5两个密钥;该方法可应用于支持Python和C 的所有系统。 的所有系统。 的所有系统。


技术研发人员:周新 黄新利 胡永刚 胡燕华 陈彦锋 王宁宁 陈建华 姜家文 潘祺喆 许荣胜 叶舟宇 程亚伟
受保护的技术使用者:中国人民解放军63601部队
技术研发日:2021.11.15
技术公布日:2022/3/25
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献