Python加密,保护你的源代码,并且自动备份,基于pyarmor

这篇具有很好参考价值的文章主要介绍了Python加密,保护你的源代码,并且自动备份,基于pyarmor。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

  • 我有个python脚本每天要定时运行,
  • 脚本别人也能看到代码的内容,
  • 但是脚本里涉及到了重要数据库和网站的账密
  • 如果打包成exe,体积和效率和稳定性都不理想,
  • 怎么办!!!
  • 神器  pyarmor  基于源代码的加密,让你的脚本即便裸奔也足够安全

二、准备必要的库

  1. 安装python(废话...)
  2. 安装pyarmor库
$ pip install pyarmor

python代码加密dist.sh,python,python,开发语言,安全安装完成,红色的部分不用管,这是因为我之前就安装过旧版本的pyarmor-webui ,卸载重装作为演示,报出新老版本不兼容了,不用管。

        * 3.安装shutil库,这个是复制文件夹的库,需要备份就必须要安装了

$ pip install shutilwhich

三、打包单个python文件

比如有个main.py在【D:\DEMO】中,内容为:

# main.py
print('这是一个被加密的文件')

调出控制台,cd到文件位置,输入

$ pyarmor gen main.py

python代码加密dist.sh,python,python,开发语言,安全

此时,D:\DEMO中将会生成dist文件夹,里面有两个文件:python代码加密dist.sh,python,python,开发语言,安全

看下此时的main.py内容:

python代码加密dist.sh,python,python,开发语言,安全

已经是被加密过了,加密过的文件可以直接运行,效果不变:

python代码加密dist.sh,python,python,开发语言,安全

pyarmor厉害的一点在于,不仅仅是源代码是被加密的,连运行的过程都是被加密的,对于95%的人来说已经足够安全了吧。现在可以把dist里面的所有文件(包括pyarmor_runtime_000000)拷贝给任何人了,只要对方的环境可以正常运行未加密的,那他就一定可以运行这份加密的,对方不需要安装pyarmor

四、打包整个python项目

准备两个文件,其一是你的python代码(或者一整个项目文件夹),其二是我下面的python脚本。

我做了一个项目包,第一个是mypkg文件夹,里面有pkg1.py这个文件,文件内容是:

# mypkg -> pkg1.py
def run():
    print('这里有很重要的密码!!')

另一个就是main.py

# main.py
from mypkg.pkg1 import run

if __name__ == '__main__':
    run()

结构就是这样的python代码加密dist.sh,python,python,开发语言,安全

运行main.py,执行结果是

这里有很重要的密码!!

以上都只是是模拟大多数情况下的python项目文件,期望得到的效果是mypkg里面的所有内容全部加密,而外层的main.py是不加密的

在main.py文件同目录下,新建一个比如名为"run_pyarmor.py"的文件,内容为:

# coding=utf-8
# @author:JW-Panda

import os
import time
import shutil

p1 = os.getcwd()
p2 = os.path.join(p1, 'dist')
p3 = os.path.join(p1, 'mypkg')
print(f'path1: {p1}\npath2: {p2}\npath3: {p3}')


def bak_unlock(n):
    """
    自动备份未加密的文件
    :param n: 最大保留数量,超出则删除最旧的文件
    :return:
    """
    bak_unlocked_address = os.path.join(p1, 'bak_unlocked')
    if not os.path.exists(bak_unlocked_address):
        os.mkdir(bak_unlocked_address)
    new_path = os.path.join(bak_unlocked_address, time.strftime('%Y%m%d—%H%M%S', time.localtime(time.time())))
    print('new_path: ', new_path)
    n2 = os.path.join(new_path, 'mypkg')
    os.mkdir(new_path)
    os.mkdir(n2)
    b_path = os.path.join(p1, 'bak_unlocked')
    print(b_path)
    l_dir = sorted(os.listdir(b_path))
    if len(l_dir) > n:
        need_del = l_dir[:len(l_dir) - n]
        print('超出最大文件夹备份需要删除的:', need_del)
        for i in need_del:
            f = os.path.join(b_path, i)
            shutil.rmtree(f)
            print(f, ' 已删除')
    for i in unlock_filelist:
        shutil.copyfile(i, os.path.join(new_path, i))
    for i in os.listdir(p3):
        if i == '__pycache__':
            continue
        n1 = os.path.join(p3, i)
        shutil.copyfile(n1, os.path.join(n2, i))


def reset_pkg():
    if os.path.exists(path=p2):
        print('移除旧文件')
        shutil.rmtree(p2)
    s = f"""d:
    cd {p1}
    pyarmor gen -O dist {p3}
    echo 打包已完成!
    start {p2}"""
    # print(s)
    with open('加密打包.bat', 'w', encoding='gbk') as f:
        f.write(s)
    os.system('加密打包.bat')
    for i in unlock_filelist:
        shutil.copyfile(i, 'dist/' + str(i))


if __name__ == '__main__':
    unlock_filelist = ['main.py']  # 将外层不需要加密的文件名写在列表里
    bak_unlock(10)  # 设定最大自动备份数量
    reset_pkg()

执行结果:

 python代码加密dist.sh,python,python,开发语言,安全

运行结束之后会自动弹出被加密的项目所有内容:

python代码加密dist.sh,python,python,开发语言,安全 

同时会在相同目录下生成自动备份的文件夹,具体如下图所示:

python代码加密dist.sh,python,python,开发语言,安全

五、小结 

关于pyarmor其实还有更加高级的用法,比如可以绑定目标设备的CPU序列号,拷贝到其他地方就不能用了;比如可以设置授权时效,超出时效就不能用了;比如可以同时对打包成exe的文件进行加密;比如可以根据优先效率还是优先加密难度进行不同的模式加密,具体大家可以到官网:Pyarmor - 加密 Python 脚本 (dashingsoft.com)查看更为详细的技术文档。

最后,这个库只要加密的整体文件在32M以内就是免费的,专业版收费,但基础版已经能够满足大多数独立开发者的使用场景了,快来试试吧!文章来源地址https://www.toymoban.com/news/detail-761290.html

到了这里,关于Python加密,保护你的源代码,并且自动备份,基于pyarmor的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vscode git 源代码管理 无法自动更新显示变更

    最近vscode 远程写代码遇到问题,git的源代码管理不能自动罗列被修改的文件 原因: 早期出现警告\\\"Visual Studio Code is unable to watch for file changes in this large workspace\\\"无法在这个大型工作区中监视文件更改 ,时不小心按到了“不再提醒”,导致当前工作区的文件数量超过了VS Code文

    2024年02月11日
    浏览(77)
  • Jenkins自动拉取SVN源代码构建打包vue前端项目

    目录 1.功能需求 2.安装插件 2.1 安装NodeJS插件 2.2  安装SVN插件 3.配置环境 3.1  NodeJS环境 4.新建任务配置部署信息 4.1  源代码管理 4.2  构建触发器 4.3  构建环境  4.4  构建步骤 5.构建项目  5.1 点击查看控制台日志 使用Jenkins从SVN上拉取Vue项目进行自动构建打包。如果需要发

    2023年04月22日
    浏览(49)
  • python加密字符串安全保护你的数据

    Python加密字符串可以使用标准库中的hashlib模块,该模块提供了常见的摘要算法,如MD5,SHA1等。下面是一个示例代码: Python加密字符串可以使用标准库中的hashlib模块,该模块提供了常见的摘要算法,如MD5,SHA1等。下面是一个示例代码: 运行结果:

    2024年02月07日
    浏览(58)
  • Python背单词记单词小程序源代码,背单词记单词小游戏源代码

    背单词小游戏,要有多界面交互,界面整洁、美观,可调节游戏等级难度,可配置游戏信息。 有游戏分数,游戏时间,动画特效,背景音乐,不同游戏等级的历史最高分记录。 拼写成功的英文单词显示中文意思。支持长按回删键[backspace],快速删除单词字母。 多种游戏困难

    2024年02月15日
    浏览(65)
  • 邮差之死--python源代码

    初学python 代码量还挺大,幸好同学找到了结构。感谢同学。 信息课上的分组作业,自己一个人写了600多行吧。结构大概是正确的,但是中间的文字可能有问题,因为没有源文档全是手敲,有的地方同学觉得比较幼稚就删了。 中间停顿如果太长了或者太短了的话抱歉,我不太

    2024年02月05日
    浏览(46)
  • python爱心源代码集锦(18款)

            本文目录: 一、代码效果预览索引图 二、爱心源代码集锦 (1)、爱心图形1(弧线型)(显示的文字写在代码里) (2)、爱心图形2(直线型)(显示的文字写在代码里) (3)、爱心图形3(弧线型)(通过输入方式显示文字) (4)、用python绘制爱心树 (5)、粒

    2023年04月15日
    浏览(36)
  • Python绘图——漂亮的玫瑰(源代码)

        2022-12-26发的“Python用turtle库绘制图形——漂亮的玫瑰”一文,比较受网友关注,反映良好,由于代码发的是源代码截图,不少网友私信我反映自己输入的代码不能正常运行,有的来信索要源代码,有的希望“分享一下代码”,故今天直接贴源代码,以满足网友的要求,来

    2024年02月07日
    浏览(52)
  • 用python写的新年快乐的代码,python节日祝福源代码

    这篇文章主要介绍了用python写的新年快乐的代码,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 import os import time import random import pygame import colorama ‘‘‘一些变量‘‘‘ BGMPATH = ‘bgm.mp3‘ colorama.init

    2024年02月03日
    浏览(51)
  • python简单小游戏代码教程,python小游戏程序源代码

    大家好,小编来为大家解答以下问题,python简单小游戏代码教程,python小游戏程序源代码,今天让我们一起来看看吧! 哈喽铁子们 表弟最近在学Python,总是跟我抱怨很枯燥无味,其实,他有没有认真想过,可能是自己学习姿势不对? 比方说,可以通过打游戏来学编程! 今天

    2024年02月02日
    浏览(66)
  • python简单小游戏代码100行,python小游戏程序源代码

    大家好,本文将围绕python简单小游戏代码100行展开说明,python小游戏代码能用的是一个很多人都想弄明白的事情,想搞清楚python小游戏程序源代码需要先了解以下几个事情。 这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的

    2024年02月06日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包