Python?使用?pyc?解決明文密鑰問題記錄
前言
寫代碼過程中,可能遇到一些敏感信息不想明文暴露在代碼中的情況,本篇文章介紹使用 pyc 解決明文密鑰問題。
1. pyc 介紹
pyc 是 Python 經(jīng)過 compile 后的文件類型,一段 Python 代碼執(zhí)行前會(huì)先將 .py 文件編譯成 .pyc 文件它是一種字節(jié)碼 byte code,然后由 Python 虛擬機(jī)執(zhí)行。
相對(duì)于 .py 來講,.pyc 對(duì)源代碼有一定保護(hù)作用,提高了模塊加載速度和跨平臺(tái)性,但代碼執(zhí)行速度未得到提高。
2. py 代碼編譯
2.1 使用命令行編譯
此時(shí)目錄下有一個(gè) hello.py
文件,代碼內(nèi)容是打印圓周率:
>>>># ls pi.py
執(zhí)行下 pi.py
[root@db4 test]# python3 pi.py 3.14159265359
編譯:
python3 -m py_compile pi.py [root@db4 test]# ls pi.py __pycache__
編譯完成后會(huì)在當(dāng)前目錄生成 pycache 目錄,里面保存的就是編譯后的文件。
2.2 使用代碼編譯
# 目錄下所有 py 文件進(jìn)行編譯 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 創(chuàng)建密鑰存儲(chǔ)代碼文件
創(chuàng)建 get_token.py 文件,創(chuàng)建 get_token_code 函數(shù) return 密鑰:
def get_token_code(): return '727241fa-1ba7-11ee-9601-fab7dbe5cd00'
3.2 編譯密鑰代碼
編譯完成后會(huì)存儲(chǔ)到 pycache 目標(biāo)中:
python3 -m py_compile get_token.py
進(jìn)入 pycache 目標(biāo),將 get_token.cpython-39.pyc
改名為 get_token.pyc
然后 mv 到代碼目錄。
mv get_token.cpython-39.pyc ../get_token.pyc
然后刪除 get_token.py 文件。
3.3 調(diào)用密鑰代碼
此時(shí)密鑰存儲(chǔ)在 get_token.pyc
文件,創(chuàng)建新代碼文件調(diào)用它:
from get_token import get_token_code print(get_token_code())
打印結(jié)果:
727241fa-1ba7-11ee-9601-fab7dbe5cd00
到此這篇關(guān)于Python 使用 pyc 解決明文密鑰問題的文章就介紹到這了,更多相關(guān)Python明文密鑰內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用pycharm在本地開發(fā)并實(shí)時(shí)同步到服務(wù)器
這篇文章主要介紹了使用pycharm在本地開發(fā)并實(shí)時(shí)同步到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08python實(shí)現(xiàn)rsa加密實(shí)例詳解
這篇文章主要介紹了python實(shí)現(xiàn)rsa加密實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07python實(shí)現(xiàn)區(qū)間合并的方法
區(qū)間合并是指將重疊的區(qū)間合并為一個(gè)或多個(gè)不重疊的區(qū)間,本文主要介紹了python實(shí)現(xiàn)區(qū)間合并的方法,文中通過代碼介紹的很詳細(xì),感興趣的可以了解一下2024-02-02Python一行代碼實(shí)現(xiàn)打開各種類型的文件
在處理大量文件時(shí),手動(dòng)一個(gè)個(gè)打開是不是很麻煩,這時(shí)候,Python的os.startfile()就是你的救星啦,本文我們就來看看如何一行代碼打開各種類型的文件吧2024-12-12python+requests接口壓力測試500次,查看響應(yīng)時(shí)間的實(shí)例
這篇文章主要介紹了python+requests接口壓力測試500次,查看響應(yīng)時(shí)間的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python數(shù)據(jù)可視化之初探?Seaborn
Seaborn?是一個(gè)基于?Matplotlib?的?Python?數(shù)據(jù)可視化庫,它提供了更高級(jí)別的接口,使得創(chuàng)建美觀的統(tǒng)計(jì)圖形變得非常簡單,在這篇文章中,我們將討論?Seaborn?的基礎(chǔ)使用方法,包括如何創(chuàng)建各種常見的統(tǒng)計(jì)圖形2023-07-07Python+wxPython實(shí)現(xiàn)文件名批量處理
在日常的文件管理中,我們經(jīng)常需要對(duì)文件進(jìn)行批量處理以符合特定的命名規(guī)則或需求,本文主要介紹了如何使用wxPython進(jìn)行文件夾中文件名的批量處理,需要的可以參考下2024-04-04Python第三方庫qrcode或MyQr生成博客地址二維碼
使用第三方庫qrcode或者M(jìn)yQr給自己的博客網(wǎng)址快速生成二維碼,一鍵分享,文中含有詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10