1、参考

https://my.oschina.net/wizardpisces/blog/107445 
https://www.cnblogs.com/kaituorensheng/p/4501128.html 
http://help.sense.com.cn/?p=165 
http://www.cnblogs.com/haq5201314/p/8437201.html

2、python下编译py成pyc和pyo (文件加密)

需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行。

由于pyc的编译收到python版本的影响,所以当将编译后的pyc迁移到另一台电脑中时,最好保持python环境一致。

将python文件.py编译成pyc二进制文件:

python -m py_file.py

或者通过脚本运行

import py_compile  ##单个文件编译
import compileall   ##多个文件编译
py_compile.compile('path') ##path是包括.py文件名的路径

将python文件编译成pyo二进制文件:

python -O -m py_file.py

pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

注意事项:pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。
什么是pyo文件?
pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件

什么是pyd文件?

pyd是python的动态链接库。windows上为pyd文件,Linux上为so文件,pyd文件实际就是dll文件
 编译成pyd的方法如下:
# 命令行下:(在项目目录下打开命令行或者shell,该命令只能编译一个文件,编译之后会发现出现三个文件,yourmod.c、yourmod.html、yourmod-win_amd64.pyd,此时将c、html和原py文件删除,将pyd文件命名更改为yourmod就可以)
cythonize -a -i yourmod.pyx

# python代码:(在原项目中编写setup.py文件)


from distutils.core import setup
from Cython.Build import cythonize
import os'''
该文件的执行需要的在Terminal中输入   python setup.py build_ext --inplace !!!
使用Cpython 编译python文件,关键函数编译成pyd文件(相当于dll)
'''
# 针对多文件情况设置,单文件就只写一个就行
key_funs = ["yourmod1.py", "yourmod2.py", "yourmod3.py"]setup(name="XX app", ext_modules = cythonize(key_funs),
)'''
1、将编译后的pyd文件的命名更改成与原py文件一致
2、删除编译后得到的c文件和原py文件
'''print("——————", os.getcwd(), "——————")files = os.listdir(os.getcwd())
print(files)for fi in files:if fi.__contains__(".pyd"):re_name = fi.split(".")[0] + ".pyd"print(re_name)os.rename(fi, re_name)elif fi.__contains__(".c") or fi in key_funs:os.remove(fi)# 运行方式 在原目录的命令行下执行
python setup.py build_ext --inplace

3、将Python文件转成exe封装(文件加密)

参考:https://blog.csdn.net/SoaringLee_fighting/article/details/78892876

4、采用hashlib或pycrypto模块进行文本加密

hashlib模块:

import hashlib
sha1 = hashlib.sha1('文本内容')  #加密
osv=sha1.hexdigest()
print(osv)
bx=bytes(osv,encoding='utf-8')    #转换类型
with open('1.txt','wb') as f: #以二进制写类型打开f.write(bx)   #写入文件
get_sha1('')

pycrypto模块:

from Crypto.Cipher import AES
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
message = "The answer is no"
ciphertext = obj.encrypt(message)
>>> ciphertext
'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
>>> obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> obj2.decrypt(ciphertext)
'The answer is no'

需要注意的是pyd文件在被其它python文件调用时依然不能被识别,但能够运行,而且setup.py的文件的执行需要的在Terminal中输入   python setup.py build_ext --inplace !!!

基于pyc、pyo容易破解的原因,建议使用pyd文件进行发布,但python3下pyc、pyo文件的破解本人未经试验,只是听说,故具体选择哪种方式大家可根据具体情况进行选择。
---------------------

python文件或文本加密(4种方法)相关推荐

  1. 4种Python文件或者文本加密的方式

    需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行. 由于pyc的编译收到p ...

  2. python打开文件不存在-Python判断文件是否存在的三种方法

    原标题:Python判断文件是否存在的三种方法 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件 ...

  3. python 文本处理模块_Python文本处理几种方法

    Python文本处理几种方法 方法一:readline函数#-*- coding: UTF-8 -*- f = open("D:\pythontest\splm_ugslmd.log&quo ...

  4. Python文本处理几种方法

    Python文本处理几种方法 方法一:readline函数 #-*- coding: UTF-8 -*- f = open("D:\pythontest\splm_ugslmd.log&qu ...

  5. 可以考的python方面的证书-python有证书的加密解密实现方法

    本文实例讲述了python有证书的加密解密实现方法.分享给大家供大家参考.具体实现方法如下: 最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时 ...

  6. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  7. python二维数组换行输出_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  8. python与excel做数据可视化-用Python进行数据可视化的10种方法

    原标题:用Python进行数据可视化的10种方法 2015-11-19 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载&quo ...

  9. python文字教程-Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  10. python压缩包怎么安装-详解python解压压缩包的五种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

最新文章

  1. mysql为什么要压测_mysql集群压测的详细介绍
  2. html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
  3. 实用Python库,这几个你认识不?
  4. UNIX网络编程——fcntl函数
  5. 鸿蒙系统打通iOS,库克真的做到了!正式官宣确认截胡鸿蒙OS系统:软硬件生态全打通...
  6. sklearn保存svm分类模型_【菜菜的sklearn】07 支持向量机(上)
  7. 黑客攻防技术宝典Web实战篇第2版—第9章 攻击数据存储区
  8. 网络合作伙伴通信协议指南:NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS
  9. 2021-2025年中国灯光调光开关行业市场供需与战略研究报告
  10. mysql搜索中文 有的匹配不出来_MYSQL-中文检索匹配与正则表达式
  11. 实体框架提供程序类型无法加载?
  12. 阿里云 SLB CDN SCDN DCDN区别在哪?如何选择?
  13. WinRAR 5.60 官方简体中文无广告弹窗版本
  14. 阿里云服务器租用价格表,阿里云服务器优惠
  15. python爬虫图书信息并存入数据库,以及安装工具库
  16. 测试按键延迟软件,怎么测试键盘延迟-灵猫键盘DIY大师测试键盘响应速度的方法 - 河东软件园...
  17. python画布上显示多张图片_python实现在一个画布上画多个子图
  18. python生成可执行文强案文件
  19. 网店系统哪个好,免费网店系统,网店系统排行
  20. 2019年计算机二级考试mysql_2019年下半年计算机二级MySQL试题

热门文章

  1. 基于STM32F103的多种波形示波器制作
  2. hc05与单片机连接图_STM32单片机最小系统详解
  3. SpringCloud高级应用(OpenFeign Ribbon Steam Sleuth+Zipkin)
  4. 框架设计--第二章 Spring中的Bean--习题答案
  5. JS设计模式-单例模式
  6. 转自it168论坛:繁体注音输入法教程
  7. Android各控件绚丽Dome下载
  8. 微信小程序下拉刷新真机没效果_微信小程序下拉刷新上拉加载的两种实现方法...
  9. 头脑王者源码微信答题小程序pk知识问答源码介绍
  10. MySQL分页查询效率