Python 使用 pyc 解决明文密钥问题记录

 更新时间:2023年07月06日 14:21:26   作者:Bing@DBA  
pyc 是 Python 经过 compile 后的文件类型,一段 Python 代码执行前会先将 .py 文件编译成 .pyc 文件它是一种字节码 byte code,然后由 Python 虚拟机执行,这篇文章主要介绍了Python使用pyc解决明文密钥问题,需要的朋友可以参考下

前言

写代码过程中,可能遇到一些敏感信息不想明文暴露在代码中的情况,本篇文章介绍使用 pyc 解决明文密钥问题。

1. pyc 介绍

pyc 是 Python 经过 compile 后的文件类型,一段 Python 代码执行前会先将 .py 文件编译成 .pyc 文件它是一种字节码 byte code,然后由 Python 虚拟机执行。

相对于 .py 来讲,.pyc 对源代码有一定保护作用,提高了模块加载速度和跨平台性,但代码执行速度未得到提高。

在这里插入图片描述

2. py 代码编译

2.1 使用命令行编译

此时目录下有一个 hello.py 文件,代码内容是打印圆周率:

>>>># ls
pi.py

执行下 pi.py

[root@db4 test]# python3 pi.py 
3.14159265359

编译:

python3 -m py_compile pi.py 
[root@db4 test]# ls
pi.py  __pycache__

编译完成后会在当前目录生成 pycache 目录,里面保存的就是编译后的文件。

2.2 使用代码编译

# 目录下所有 py 文件进行编译
import compileall
compileall.compile_dir('./')
# 单文件编译
import py_compile
py_compile.compile('pi.py')

cat 看的话就是一堆乱码:

�(�d&�@sddlZejZee�dS)�N)ZmathZpi�val�print�rr�pi.py<module>

3. 避免名为密钥案例

3.1 创建密钥存储代码文件

创建 get_token.py 文件,创建 get_token_code 函数 return 密钥:

def get_token_code():
    return '727241fa-1ba7-11ee-9601-fab7dbe5cd00'

3.2 编译密钥代码

编译完成后会存储到 pycache 目标中:

python3 -m py_compile get_token.py 

进入 pycache 目标,将 get_token.cpython-39.pyc 改名为 get_token.pyc 然后 mv 到代码目录。

mv get_token.cpython-39.pyc ../get_token.pyc

然后删除 get_token.py 文件。

3.3 调用密钥代码

此时密钥存储在 get_token.pyc 文件,创建新代码文件调用它:

from get_token import get_token_code
print(get_token_code())

打印结果:

727241fa-1ba7-11ee-9601-fab7dbe5cd00

到此这篇关于Python 使用 pyc 解决明文密钥问题的文章就介绍到这了,更多相关Python明文密钥内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用pycharm在本地开发并实时同步到服务器

    使用pycharm在本地开发并实时同步到服务器

    这篇文章主要介绍了使用pycharm在本地开发并实时同步到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python实现rsa加密实例详解

    python实现rsa加密实例详解

    这篇文章主要介绍了python实现rsa加密实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • python实现区间合并的方法

    python实现区间合并的方法

    区间合并是指将重叠的区间合并为一个或多个不重叠的区间,本文主要介绍了python实现区间合并的方法,文中通过代码介绍的很详细,感兴趣的可以了解一下
    2024-02-02
  • pytorch 多个反向传播操作

    pytorch 多个反向传播操作

    这篇文章主要介绍了pytorch 多个反向传播操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Python一行代码实现打开各种类型的文件

    Python一行代码实现打开各种类型的文件

    在处理大量文件时,手动一个个打开是不是很麻烦,这时候,Python的os.startfile()就是你的救星啦,本文我们就来看看如何一行代码打开各种类型的文件吧
    2024-12-12
  • python+requests接口压力测试500次,查看响应时间的实例

    python+requests接口压力测试500次,查看响应时间的实例

    这篇文章主要介绍了python+requests接口压力测试500次,查看响应时间的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python数据可视化之初探 Seaborn

    python数据可视化之初探 Seaborn

    Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,它提供了更高级别的接口,使得创建美观的统计图形变得非常简单,在这篇文章中,我们将讨论 Seaborn 的基础使用方法,包括如何创建各种常见的统计图形
    2023-07-07
  • Python+wxPython实现文件名批量处理

    Python+wxPython实现文件名批量处理

    在日常的文件管理中,我们经常需要对文件进行批量处理以符合特定的命名规则或需求,本文主要介绍了如何使用wxPython进行文件夹中文件名的批量处理,需要的可以参考下
    2024-04-04
  • Python 绘制桑基图全面解析

    Python 绘制桑基图全面解析

    桑基图,即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。试了一下用python画桑基图,在这里整理了一下分享给大家
    2021-09-09
  • Python第三方库qrcode或MyQr生成博客地址二维码

    Python第三方库qrcode或MyQr生成博客地址二维码

    使用第三方库qrcode或者MyQr给自己的博客网址快速生成二维码,一键分享,文中含有详细示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10

最新评论