首页 / 知识
Python 代码混淆和加密技术
2023-11-12 13:46:00
动机
Python进行商业开发时,需要有一定的安全意识,为了不被轻易的逆向.混淆和加密就有所必要了.
混淆
为了增加代码阅读的难度,源代码的混淆非常必要,一个在线的Python代码混淆网站.http://pyob.oxyry.com/
同时需要注意的是,这个混淆其实还是被很多人怀疑的,因为即使混淆了,也没有改变代码的结构.这种方法只能”防君子,不防小人“
所以,必要的话,在编程的时候,可以故意做点提高逆向难度的事情:
结构稍微改变,合并几个类到同一个文件.
面向对象的结构中,偶尔穿插一些无伤大雅的范式编程风格.
加密
1.最基本的方法是发布pyc文件,也就是将所有的.py源文件转换成pyc对外发布.pyc有一个局限性是依赖于python解析器的版本,使用某一个版本的python解释器生成的pyc必须要在相同版本下的python解释器下才可以正常工作.
使用上述方法可以方便的生成pyc,初步的隐藏代码了.不过pyc依然可以被容易的破解
2.另一种方案是借助cython.Cython是属于PYTHON的超集,cython可以将python文件转换成c,并编译成pyd文件.一般将核心模块编译成pyd,这样被破解的风险就大大降低了.优势:资源丰富,适合快速开发。翻译成C后速度比较快。缺点是:无法支持JIT技术(导致纯python的执行速度比JAVA、JAVASCRIPT等要慢,于是有了PyPy)
有一个经验之谈,你可以将所有每个模块中的某个一个位置的变量抽出,放到一个python文件中,使用cython来处理这个文件.这样就会增加破解者从其他pyc文件中移除pyd文件依赖的难度了.
总结
作为一门解释型的语言,加密的难度超级大的,开源代码是王道,但是遇到非加密不可情况,可以选择上面的加密方法或者混淆方法。
以上内容为大家介绍了Python代码混淆和加密技术,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
linux命令连接网站?
linux命令连接网站?,网络,系统,信息,地址,名称,密码,设备,软件,网站,工具,Linux下必须知道的11个网络命令1、netstat -r:打印路由表。路由表保linux命令行看代码?
linux命令行看代码?,代码,基础,系统,命令,数字,工作,情况,进程,程序,终端,在Linux命令终端中查看和编辑曾执行过的命令1、使用历史命令:在终端linux命令代码怎么看?
linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,linux查看系统命令是什么有的,Linux中有多个命令可以用于查看文件比较好用的Python代码编辑器
比较好用的Python代码编辑器,代码,平台,环境,培训,教育,设计,数据,办公,人员,分析,Python是一款非常简单的编程语言,其功能使用起来都十分方便pycharm无法输入代码?
pycharm无法输入代码?,代码,环境,工具,分析,输入法,键盘,性能,计算机,问题,版本,PyCharm是一款Python语言开发的集成开发环境(IDE),它是许多Pytho让Python代码更易维护的工具
让Python代码更易维护的工具,代码,工具,标准,项目,质量,地方,更正,一致,变动,软件,检查你的代码的质量,通过这些外部库使其更易维护。可读性很大学生报名Python培训课程的好处是
大学生报名Python培训课程的好处是什么?,培训,企业,社会,项目,行业,工作,时间,技术,都会,素养,一、报名学习前沿技术在IT行业,技术在不断变化和python代码的规范建议
python代码的规范建议,代码,异常,二元,设计,数字,下降,一致,培训,标准,空行,1.一致性的建议打破一条既定规则的两个好理由当应用这个规则将导线上Python培训和线下有什么不同?
线上Python培训和线下有什么不同?,培训,基础,实战,电脑,项目,教育,时间,地方,初级,技术,学习互联网技术的人越来越多,很多机构都采取线上和线下报名Python培训选择哪种方式比较好
报名Python培训选择哪种方式比较好?,培训,工作,基础,时间,情况,在线,最划算,环境,系统,方式,Python不仅是一种高级的编程语言,而且还是一种应用Python数据分析相关的技术
Python数据分析相关的技术,数据,工具,化学,设计,分析,网络,软件,系统,工程,商业,1.机器学习和计算机视觉Crab:灵活、快速的推荐引擎gensim:人性在Python培训中有哪些必学的运算符
在Python培训中有哪些必学的运算符?,项目,培训,数字,变量,赋值,符号,两个,表示,数学,示例,不论是Python还是其他后端编程语言,都少不了运算符的