如何使用Cython对python代码进行加密
Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件。优势:资源丰富,适合快速开发。翻译成C后速度比较快,在windows环境中用cython加密后的文件后缀是pyd文件,在linux环境中加密后的问题后缀是so文件,下面以linux环境作为演示
环境准备
- 系统环境:centos 7
- Python版本:python3.x
- 需要的第三方包:cython
加密代码部分
encryption.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["Jruing.py"])) # 列表中是要加密的文件名
要加密的代码部分
Jruing.py
def hello_world(): print("hello world!!!")
将以上代码保存为encryption.py,在命令行中输入python encryption.py build_ext,它会在encryption.py这个文件的当前路径下生成build文件夹,build/lib-*/Jruing-*.so (“*”部分代表的是Python版本等一系列信息,这个不重要,windows环境会在同样的目录下生成Jruing-*.pyd文件),我们可以把这个so文件直接重命名为Jruing.so
调用加密后的文件中的函数
我们进入到so文件所在的目录,编写一个调用hello_world的程序
from Jruing import hello_world # Jruing为so文件的文件名
hello_world()
加密Flask Web服务
flask 文件一般会创建一个app对象,它启动也是通过这个app对象去启动的,直接加密会加密成功,但是执行会出现问题,我们可以在调用文件中导入app对象,然后app.run()启动就可以了,具体操作如下
一个flask web服务Demo
flask_demo.py
from flask import Flask app = Flask(__name__) @app.route('/',methods=['GET']) def root(): return "hello world" if __name__ == '__main__': app.run(host='127.0.0.1',port=5000)
在加密之前我们把它改为
flask_demo_test.py
from flask import Flask app = Flask(__name__) @app.route('/',methods=['GET']) def root(): return "hello world"
用上面提到的方法对flask_demo_test.py文件进行加密
调用flask_demo_test.py启动服务
from flask_demo_test import app
app.run(host='127.0.0.1',port=5000)
这样就好了!!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
python encrypt 实现AES加密的实例详解
AES加密方式有五种 : ECB, CBC, CTR, CFB, OFB 从安全性角度推荐cbc算法 windows 下安装 : pip install pycryptodome linux 下安装 : pip install pycrypto cbc加密需要一个十六位的key 和一个十六位的iv(偏移量) ecb加密不需要iv aes cbc 加密的python实现 from Crypto.Cipher import AES from binascii import b2a_hex, a2b_
-
Python 实现加密过的PDF文件转WORD格式
实现方法简介 许多文件都支持转换为PDF格式,诸如Word,Excel,PowerPoint,Cad以及图片格式.所以pdf从学校到职场,都可以看到pdf文件的身影. 为了保证了文件的安全性,正常情况下无法对pdf的内容进行编辑.但是相应的我们就无法修改pdf的内容,也不便于pdf资料的使用.虽然现在市面上有很多 pdf 转 word 软件,比如 wps,但大多数的软件是要收费的,并且价格不菲.前些天就有人叫我帮她把 pdf 文档转成 word 的文档.因为写尽调报告需要去查看各种信评资料,往往
-
Cython 三分钟入门教程
作者:perrygeo译者:赖勇浩(http://laiyonghao.com)原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它的代码优雅而实用,可惜纯粹从速度上来看它比大多数语言都要慢.大多数人也认为的速度和易于使用是两极对立的--编写C代码的确非常痛苦.而 Cython 试图消除这种两重性,并让你同时拥有 Python 的语法和 C 数据类型和函数--它们两个都是世界上最好的.请记住,我绝不是我在这方面的专家,这是我的第一次
-
如何用C代码给Python写扩展库(Cython)
之前一篇文章里提到了利用Cython来编译Python,这次来讲一下如何用Cython给Python写扩展库. 两种语言混合编程,其中最重要的是类型的传递. 我们用一个简单的例子进行入门:这次的目标是用C语言写一个Numpy的加法和元素相乘模块.在本例中,Numpy的array被传入到C语言模块内,变成了二维数组. 1. 头文件main.h: #ifndef _MAIN_H #define _MAIN_H void plus(double *a, double *b, double *r, in
-
Cython编译python为so 代码加密示例
1. 编译出来的so比网上流传的其他方法小很多. 2. language_level 是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指定language_level. 3. python setup.py build_ext --inplace 执行脚本 4. 以下是代码片段 from distutils.core import Extension, setup from Cython.Build import cythonize from Cytho
-
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
生活中我们经常会遇到一些加密算法,今天我们就聊聊这些加密算法的Python实现.部分常用的加密方法基本都有对应的Python库,基本不再需要我们用代码实现具体算法. MD5加密 全称:MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致.md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密.Python代码: i
-
python加密解密库cryptography使用openSSL生成的密匙加密解密
密匙使用步骤一般是: 1. 私匙签名,发送签名后的数据, 公匙验证. 2.公匙加密,发送加密后的数据,私匙解密. 一般使用情景是通过 openssl 生成密匙后再操作的.Linux下生成密匙也很简单. yum 安装 openssl yum -y install openssl 生成三个密匙文件. rsa_private_key.pem 私匙文件 rsa_private_key_pkcs8.pem pkcs8格式私匙, rsa_public_key.pem 公匙 openssl
-
用Cython加速Python到“起飞”(推荐)
事先声明,标题没有把"Python"错打成"Cython",因为要讲的就是名为"Cython"的东西. Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库.由于Python固有的性能差的问题,用C扩展Python成为提高Python性能常用方法,Cython算是较为常见的一种扩展方式. 我们可以对比一下业界主流的几
-
详解如何利用Cython为Python代码加速
引言 通常,在 Python 中写循环(特别是多重循环)非常的慢,在文章 //www.jb51.net/article/133807.htm中,我们的元胞自动机的状态更新函数 update_state 使用了两重循环,所以我们尝试用 Cython 重构该方法. 代码 我们在同文件夹下新建一个 update.pyx 文件,写入如下内容 import numpy as np cimport numpy as np cimport cython DTYPE = np.float ctypedef np
-
如何使用Cython对python代码进行加密
Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速度比较快,在windows环境中用cython加密后的文件后缀是pyd文件,在linux环境中加密后的问题后缀是so文件,下面以linux环境作为演示 环境准备 系统环境:centos 7 Python版本:python3.x 需要的第三方包:cython 加密代码部分 encryption.py from distutils.core im
-
如何给Python代码进行加密
这篇文章主要介绍了如何给Python代码进行加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 去年11月在PyCon China 2018 杭州站分享了 Python 源码加密,讲述了如何通过修改 Python 解释器达到加解密 Python 代码的目的.然而因为笔者拖延症发作,一直没有及时整理成文字版,现在终于战胜了它,才有了本文. 本系列将首先介绍下现有源码加密方案的思路.方法.优点与不足,进而介绍如何通过定制 Python 解释器来达到
-
利用20行Python 代码实现加密通信
目录 一.引言 二.加密技术 三.普通锁:简单的对称加密 四.不可篡改的指纹:哈希函数 五.矛与盾:非对称加密 六.真言:数字签名 七.总结 一.引言 网络上充满了窃听,我们的信息很容易被不怀好意的人获得,给我们造成不好的影响.如果你需要在网络上传输机密或者敏感的隐私信息,为了防备别有用心的人窃听,可能需要加密.而使用在线或者手机上的加密软件,可能不良软件更是泄露信息的温床.所以作为程序员的我们,完全可以自己来实现一个加密系统. 本文用 20 行 Python 代码来演示加密.解密.签名.验证的
-
使用C++调用Python代码的方法步骤
一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性->VC++目录 1)包含目录: Python安装路径/include 2)库目录: Python安装路径/libs 右击项目->属性->连接器->输入->附加依赖库 debug下: python安装目录/libs/python37_d.lib release下: python安装目录
-
使用C++调用Python代码的方法详解
一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性->VC++目录 1)包含目录: Python安装路径/include 2)库目录: Python安装路径/libs 右击项目->属性->连接器->输入->附加依赖库 debug下: python安装目录/libs/python37_d.lib release下: python安装目录
-
python代码的几种常见加密方式分享
目录 1.发行.pyc文件 1.1 编译加密 1.2 是否可逆 1.3是否影响模块调用 2.代码混淆 3.生成exe可执行文件 4…py文件转化为.so文件 5.附加运行辅助包文件 方式一:高级加密模式,需要引导代码 方式二:超级加密模式 方式三: 虚拟加密模式 Python的文件类型介绍: .py python的源代码文件 .pyc Python源代码import后,编译生成的字节码 .pyo Python源代码编译优化生成的字节码.pyo比pyc并没有优化多少,只是去掉了断言 .pyd Py
-
分享一个python的aes加密代码
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一.---百度百科 本科的时候弄过DES
-
python实现RSA加密(解密)算法
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. 今天只有短的RSA钥匙才可能被强力方式解破.到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式.只要其密钥的长度足够长,用RSA加密的信息实际上是不能被解破的.但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战. RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥.
随机推荐
- python中pygame针对游戏窗口的显示方法实例分析(附源码)
- Go语言中使用flag包对命令行进行参数解析的方法
- 卸载安装Node.js与npm过程详解
- Java操作MongoDB模糊查询和分页查询
- php数字转汉字代码(算法)
- Mysql之EXPLAIN显示using filesort介绍
- 约瑟夫问题的Python和C++求解方法
- Ajax动态为下拉列表添加数据的实现方法
- 解决Vue编译时写在style中的路径问题
- Android应用中ListView利用OnScrollListener分页加载数据
- Java语法基础之循环结构语句详解
- JavaScript使用指针操作实现约瑟夫问题实例
- android连续拖动导致挂起的解决方法
- C#控制Excel Sheet使其自适应页宽与列宽的方法
- PHP实现的二分查找算法实例分析
- linux环境下的python安装过程图解(含setuptools)
- numpy的文件存储.npy .npz 文件详解
- js+html实现周岁年龄计算器
- Python合并多个Excel数据的方法
- SpringBoot自定义starter实例代码