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

news2024/11/24 7:30:01

文章目录

    • 前言
      • 1. pyc 介绍
      • 2. py 代码编译
        • 2.1 使用命令行编译
        • 2.2 使用代码编译
      • 3. 避免名为密钥案例
        • 3.1 创建密钥存储代码文件
        • 3.2 编译密钥代码
        • 3.3 调用密钥代码

前言

写代码过程中,可能遇到一些敏感信息不想明文暴露在代码中的情况,本篇文章介绍使用 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多tab之间的sessionStorage能不能直接共享访问?

首先&#xff0c;先理解下一个页面的sessionStorage是怎么回事。 1、当前A页面有sessionStorage值为123&#xff0c;我F5强刷页面&#xff0c;sessionStorage值还在不在&#xff1f; 答&#xff1a;在。 2、当前A页面有sessionStorage值为123&#xff0c;我复制A页面地址在浏览…

浏览器console发送get或post请求

浏览器console发送get或post请求 get请求 var url "http://******:8080/base/testapi/testcurl?urlhttps%3A%2F%2Fwww.baidu.com%2F"; var xhr new XMLHttpRequest(); xhr.open("GET", url, true); xhr.setRequestHeader("Content-Type", &…

RPG++——游戏编辑器的开发

完整资料进入【数字空间】查看——baidu搜索"writebug" 随着当下电子设备的普及以及人们对娱乐需求的上升&#xff0c;电子游戏逐渐走进千家万户。RPG&#xff08;角色扮演&#xff09;游戏作为最经典的游戏种类之一&#xff0c;因其游戏形式多样&#xff0c;自由度…

矢量数据库对比和选择指南

矢量数据库是为实现高维矢量数据的高效存储、检索和相似性搜索而设计的。使用一种称为嵌入的过程&#xff0c;将向量数据表示为一个连续的、有意义的高维向量。 本文将研究存储/检索向量数据和执行相似性搜索的实用方法&#xff0c;在我们深入研究之前&#xff0c;首先先介绍矢…

改进 Elastic Stack 中的信息检索:提高搜索相关性的步骤

作者&#xff1a;Grgoire Corbire, Quentin Herreros, Thomas Veasey 自 8.0 和用于文本嵌入的第三方自然语言处理 (NLP) 模型发布以来&#xff0c;Elastic Stack 的用户可以访问各种模型来嵌入其文本文档并使用矢量搜索执行基于查询的信息检索。 考虑到所有这些组件及其参数…

Rust 第二天---Rust基础总结

之前已经配置好了Rust的环境,那学习一门语言最开始就是去掌握了解它的基本语法.其实Rust的语法和大多编程语言没什么差别,熟悉C的应该很容易上手,所以今天就快速过一遍基础. 1. 变量与常量 变量应该是编程中最常用到的,但是Rust与其他语言不同的是在声明变量的时候必须说明这…

vue最强table vxe-table 虚拟滚动列表 前端导出

最近遇到个问题。后台一次性返回2万条列表数据。 并且需求要求所有数据必须全部展示&#xff0c;不能做假分页&#xff08;不能优化了&#xff09;。 这些数据的直接来源就是CS客户端。 他们做CS客户端就是一次性加载几万条数据不分页&#xff08;说这是客户的要求&#xff…

android_mars老师_定位_获取最佳的provider

结果展示 ManiActivity package com.example.locationmanager2;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.location.Criteria; import android.location.LocationManager; import android.os.Bundle; import android.…

开放式耳机对耳朵伤害大吗?开放式耳机是什么意思?

​今天来跟大家一起聊聊&#xff0c;开放式耳机对耳朵伤害大不大&#xff0c;还有就是开放式耳机到底是什么类型的耳机&#xff0c;且开放式耳机有哪些比较好用的... 开放式耳机对耳朵伤害大吗&#xff1f; 开放式耳机对耳机的伤害是比较小的&#xff0c;传统入耳式耳机佩戴久了…

【Linux实验】将个人主页上传到服务器

一、实验目的 l 网页制作&#xff1b; l 熟悉 Linux FTP or scp 拷贝&#xff1b; l 熟悉 apache 权限配置。 二、实验内容 l 创建个人主页&#xff1b; l 用 FTP 或 scp 上传服务器&#xff1b; l chmod 设置目录权限&#xff1b; l Web 访问。 三、实验代码 略…

ModaHub魔搭社区:Milvus向量数据库最权威全面的百科

目录 什么是 Milvus&#xff1f; Milvus 向量数据库专为向量查询与检索设计&#xff0c;能够为万亿级向量数据建立索引。与现有的主要用作处理结构化数据的关系型数据库不同&#xff0c;Milvus 在底层设计上就是为了处理由各种非结构化数据转换而来的向量而生。 产品版本 强…

进行EE存储时需要关中断

一、调度中执行存储 在task调度里执行存储任务&#xff0c;在存储之前必须关掉中断&#xff0c;存储之后再打开中断&#xff0c;否则将会影响存储。以下两个函数分别执行挂起所有嵌套的中断和恢复所有嵌套的中断。 二、下电存储 在下电存储之前也需要使EcuM Shutdown或者Shut…

彻底掌握IDEA Debug技巧让你的开发不受任何阻挠

高效开发&#xff1a;IntelliJ IDEA Debug技巧 Debug用来追踪代码的运行流程&#xff0c;通常在程序运行过程中出现异常&#xff0c;启用Debug模式可以分析定位异常发生的位置&#xff0c;以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习…

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操(上)

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操&#xff08;上&#xff09; 1. 前言2. ribbon整合eureka入门2.1 修改相关配置2.1.1 修改服务消费者pom&#xff0c;引入ribbon相关依赖2.1.2 修改服务消费者yml&#xff0c;将客户端注册进eureka服务列表内2.1.3 修改配置类…

Python爬虫爬取双色球开奖结果源码

使用Python编写双色球爬虫&#xff1a;解析彩票数据 引言&#xff1a; 在数字化时代&#xff0c;彩票已经成为人们休闲娱乐的一种方式。而双色球无疑是最受欢迎的彩票之一&#xff0c;它的中奖概率和巨额奖金吸引了无数人的注意。在本文中&#xff0c;我们将介绍如何使用Python…

华为OD机试真题 Python 实现【知识图谱新词挖掘1】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 小华负责公司知识图谱产品&#xff0c;现在要通过新词挖掘完善知识图谱。 新词挖掘: 给出一个待挖掘文本内容字符串Content和一个词的字符串word&am…

apple pencil二代平替笔哪个好用?好用的苹果笔推荐

自从ipad和其他的平板电脑都搭配上了电容笔以后&#xff0c;电容笔很好地取代了我们的手指&#xff0c;书写的效率就大大提升了&#xff0c;但由于苹果原装电容笔的价格不够人性化&#xff0c;一直高居不下给普通人带来了很大的负担&#xff0c;特别是对于学生们来说&#xff0…

6个提高图片分辨率的在线网站,真的超级实用!

在日常生活中&#xff0c;我们经常会遇到保存的图片模糊不清的情况。有时候这可能是由于保存方式不当&#xff0c;有时候则是由于图片在上传至网站时被压缩所致&#xff0c;导致画质和分辨率下降。 那么&#xff0c;有没有办法可以提高图片的分辨率和画质呢&#xff1f;事实上…

【笔记】微机原理及接口技术5 -- MCS51单片机概述

MCS-51 CPU 由两个部分组成&#xff1a;运算器和控制器 运算器&#xff1a;算术逻辑单元&#xff08;ALU&#xff09;、位处理器、累加器 ACC 等组成&#xff1b; 控制器&#xff1a;主要有内部晶振和一些定时、控制逻辑组成 存储器 拥有三个存储器地址空间 程序存储器地址…

【内网穿透】Linux服务使用宝塔面板搭建网站,并内网穿透实现公网远程访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自cpolar极点云文章&#xff1a;Linux使用宝塔面板搭建网站&#xff0c;并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#xf…