因为需要将代码运行在外面的机器上,所以为了保护代码的安全,需要对核心代码进行加密,在网上找了很多资料, python有py,pyc,pyw,pyo,pyd等文件格式,其中,

pyc是二进制文件.但很容易被反编译.

pyw也不行,只是隐藏命令行界面而已,可以作为入门脚本.

pyo和py差不多,也容易被反编译,最后只剩下pyd格式.

pyd格式是D语言(c/c++综合进化版本)生成的二进制文件,实际也是dll文件(DLL是一个包含可由多个程序,同时使用的代码和数据的库). 该文件目前为止没有找到被反编译的方法,只能被反汇编,无返返回变成.py或.pyx 源文件,只能反汇编成.c文件,且反汇编出来的程序会和源程序会有许多不同.

小结: .pyd文件 是由 .c文件生成的 .c文件 由 源.py 或 .pyx文件 基于Cython库 生成

python的py文件生成pyd文件步骤:

安装 Cython:

pip install Cython

在要被编译的py文件的当前目录下,创建一个setup.py文件,文件内写代码:

from Cython.Build import cythonize

from distutils.core import setup

setup(name='nihao',ext_modules=cythonize(r"要被编译的py文件的绝对路径"))

cythonize() 是Cython提供将python转换成c代码的API

setup是Python提供的一种发布Python模块的方法.

警告:使用开发环境是python3时要注意:会报警告,出问题.

FutureWarning:Cython directive 'language_level' not set, using 2 for now (Py2)

只要在要被编译的文件内容上方加上 # cython: language_level=3 即可

使用命令行编译python setup.py build_ext --inplace

要注意,输入命令时需要在setup相应的路径下输入该命令

输入命令后会出现“Unable to find vcvarsall.bat”错误。

问题原因:python 编译器找不到计算机上面的 VC 编译器,计算机上没有安装 visual studio c++。

解决方法1:

下载相应的VC编译器,安装Build Tools for Visual Studio即可

解决方法2:

在虚拟环境的cmd中执行 conda install libpython

等待下载安装(可能需要一小段时间),然后再次执行python setup.py build_ext --inplace 即可,网上的方法,未尝试.

解决方法明细:附一大佬的博客园地址:https://www.cnblogs.com/xunziji/p/7785021.html 内有更完美的方法,下在对应版本的.wsl文件 再在c盘下进行 pip install xxx.wsl 即可.

5.执行完后会生成如下文件

生成文件xxx.cp36-win_amd64.pyd

手动将其重命名为xxx.pyd

注意:这里重命名时去掉“.cp35-win_amd64”不要更改前面的名字,否则不能正常引用

然后python环境下

import xxx #保证当前文件夹下没有xxx.py或者xxx.pyc

xxx.test()

build是生成过程使用到的临时文件。xxx.c也是临时文件.

xxx.pyd是我们所需的文件。在linux环境下,对应的是xxx.so

pyd文件可以像平常一样使用

这样将py核心代码改成pyd格式即可实现源码加密功能.

windows 将python源代码加密_对源代码进行pyd加密相关推荐

  1. sql server 加密_列级SQL Server加密概述

    sql server 加密 This article gives an overview of column level SQL Server encryption using examples. 本 ...

  2. bfv同态加密_五分钟了解同态加密及三种常见方案

    同态加密是一种允许直接对加密数据执行计算而无需解密密钥加密方案.从理论上讲其功能强大且在学术上很具有吸引力,但是实际使用门槛较高. 原文标题:<隐私保护计算技术指南 4> 撰文:陈智罡 概 ...

  3. nginx ssl加密_如何通过让我们加密SSL证书来保护Nginx

    nginx ssl加密 Let's Encrypt is a free, open source and automated certificate authority (CA) pioneered ...

  4. mysql连接密码加密_数据库连接用户名和密码加密

    我们的工程项目往往是使用云数据库的,连接使用账号密码就行了,但是程序里直接有密码是十分不安全的 这里我参考了别人的博客对这个问题进行解决 1. 需求背景 我们在开发应用时,需要连接数据库,一般把数据库 ...

  5. bfv同态加密_三、全同态加密-飞马(section 1)

    Hello, 大家好,我是你们的"安全六三". 又见面啦!今儿有知友喊我"三哥",嗯... 突然想改名字了. 为什么不继续更BGV? 别问,问就是懒得更~~,开 ...

  6. python程序加密_项目源代码被好朋友“盗用”!让我痛心疾首!给Python源码加密!...

    在加速发展的今天,互联网是一把双刃剑,既可以让软件行业高速发展,也能让它变成到处可见的免费资源.一个软件企业想要高速发展,技术很重要,安全也相当重要,它们同时存在才能保证软件的知识产权不受侵害,实现商 ...

  7. 软件著作权 python代码少_软件著作权源代码咋么整理?复制粘贴?out了,直接使用python啦...

    一个小需求: 在申请软件著作权的时候,需要提交一页50行,总共60页的源代码.但是设计的项目保存在多级的目录下,不想一个一个复制,遂通过python ,os模块获得全部目录的文件,re正则化过滤无效源 ...

  8. python是自由开放源代码软件_开放源代码定义之历史篇

    引言 本文节选自<开源之声--开放源代码运动文集>一书中由著名开源领袖 Bruce Perens 所执笔的<开放源代码定义>一文,开源之道尝试以开放源代码原作者的视野,从而看看 ...

  9. python一箭穿心代码_一箭穿心源代码

    #include #include // 提供 system() 函数 int main(void) { printf(" 送给你 - 亲爱的 \n"); printf(" ...

最新文章

  1. wtl中显示html,用WTL构建HTML界面应用程序(1)
  2. scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
  3. Android 7.0 隐式广播-监听网络变化
  4. 计算几何之凸包_卷包裹算法
  5. 比Excel还简单,跳槽数据分析岗必会的工具
  6. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_6_练习_转换文件编码...
  7. 小度独立融资,百度上演“大象跳舞”
  8. C++统计代码执行耗时
  9. react组件书写规范
  10. 从安卓recovery 的 backup 备份数据中手动恢复 通讯录、短信,或者其他软件中的信息的方法
  11. 键盘之争:QWERTY还是Dvorak
  12. 工具 | 分享一个很酷的上位机软件
  13. 一个关于计算分批进货按照先进先出规则的商品成本统计算法(js版本)
  14. Confluence: A Robust Non-IoU Alternative toNon-Maxima Suppression in Object Detection 论文学习
  15. Python金融数据分析入门到实战-视频课程
  16. STL学习_(一)STL简介-STL六大组件简介
  17. 洛谷 P1719 最大加权矩形 动态规划
  18. 网站运维如何监控云主机服务
  19. C#游戏开发之炸弹人游戏开发
  20. protocols 协议

热门文章

  1. Scala --- 第三章 数组相关操作
  2. 输入一组整数,0结束输入,之后输出输入的最大的和最小的整数.【思路】
  3. 游戏UI框架设计(三) : 窗体的层级管理
  4. Trunc(dtpPurDate.DateTime)可以将时间取到天。
  5. 微信读书vscode插件_快来!让这款 VSCode 插件吹爆你的彩虹屁!
  6. android studio 链接编辑,Android Studio怎么连接手机测试程序?
  7. mysql cluster 安装_MYSQL Cluster安装攻略
  8. mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题
  9. mysql connect 500_MySQL连接问题【mysql_connect和mysql_pconnect区别】
  10. 时间到,考试结束。请同学们交卷......