欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python加密打包程序詳解

 更新時間:2023年04月13日 09:22:35   作者:你的破壁人呀  
這篇文章主要介紹了python加密打包程序,還給大家介紹了Python實現(xiàn)文件簡單加解密的方法,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下

python加密打包程序

加密方式:將py文件轉為pyd格式

  • 安裝easycython模塊 pip install easycython
  • 使用easycython命令將py轉pyd: easycython xx.py, 會在同一目錄生成xx.pyd(如果是64位系統(tǒng)生成的文件名為xx.cp36-win_amd64.pyd);
  • 將xx.cp36-win_amd64.pyd重命名為xx.pyd;
  • 使用pyinstaller打包(由于xx.py和xx.pyd在同一目錄, pyinstaller會優(yōu)先打包pyd), 打包時添加—hidden-import xx選項.
  • 生成的打包文件中會包含xx.pyd;
  • 注意: 如果打包時使用了—key選項, 但打包的模塊是pyd格式的, 則pyd文件不會被加密, 只是打包

打包腳本:        

 打包參數(shù)說明:       

  •  -F:僅僅生成一個文件,不暴露其他信息,啟動較慢。
  •         -D:生成一個文件夾,里面是多文件模式,啟動快。
  •         -w:窗口模式打包,不顯示控制臺。

示例

pyinstaller -F -w -i logo.ico python_file1.py  python_file2.py  python_file3.py

補充:Python實現(xiàn)文件簡單加解密

一、基礎知識

python中的異或操作符為 ^ ,也記作XOR,按位異或的結果是:值相同時異或為0,值不同時異或為1,一共有四種情況:0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0,使用異或可以對文件進行簡單的加解密操作。

加密操作:首先將文件轉換為二進制數(shù),再隨機生成一個與該二進制等長的密鑰,將文件的二進制數(shù)與密鑰進行異或操作,就能得到加密后的二進制數(shù),存儲為加密文件。

解密操作:將加密后的二進制文件與密鑰再進行異或操作,就能得到原二進制數(shù),再將原二進制數(shù)恢復成文件。

二、加解密算法

1.導入運行庫

import json
from pathlib import Path
from secrets import token_bytes
import argparse

2.定義生成密鑰函數(shù)

def random_key(length):
    key = token_bytes(nbytes=length)            #根據指定長度生成隨機密鑰
    key_int = int.from_bytes(key, 'big')        #將byte轉換為int
    return key_int

3.定義加解密單元

def encrypt(raw):                                    #加密單元
    raw_bytes = raw.encode()                         #將字符串編碼成字節(jié)串
    raw_int = int.from_bytes(raw_bytes, 'big')       #將byte轉換成int
    key_int = random_key(len(raw_bytes))             #根據長度生成密鑰
    return raw_int ^ key_int, key_int         #將密鑰與文件異或,返回異或后的結果和密鑰
 
def decrypt(encrypted, key_int):                             #解密單元
    decrypted = encrypted ^ key_int                          #將加密后的文件與密鑰異或
    length = (decrypted.bit_length() + 7) // 8               #計算所占比特大小
    decrypted_bytes = int.to_bytes(decrypted, length, 'big') #將int轉換回byte
    return decrypted_bytes.decode()                          #解碼后返回

4.加密文件

def encrypt_file(path, key_path=None, *, encoding='utf-8'):    #參數(shù)path指定文件地址
    path = Path(path)
    cwd = path.cwd() / path.name.split('.')[0]
    path_encrypted = cwd / path.name
    if key_path is None:
        key_path = cwd / 'key'
    if not cwd.exists():
        cwd.mkdir()
        path_encrypted.touch()
        key_path.touch()
 
    //打開文件并將內容寫入
    with path.open('rt', encoding=encoding) as f1, \
            path_encrypted.open('wt', encoding=encoding) as f2, \
            key_path.open('wt', encoding=encoding) as f3:
        encrypted, key = encrypt(f1.read())
        json.dump(encrypted, f2)
        json.dump(key, f3)

5.解密文件

def decrypt_file(path_encrypted, key_path=None, *, encoding='utf-8'):
    path_encrypted = Path(path_encrypted)
    cwd = path_encrypted.cwd()
    path_decrypted = cwd / 'decrypted'
    if not path_decrypted.exists():
        path_decrypted.mkdir()
        path_decrypted /= path_encrypted.name
        path_decrypted.touch()
    if key_path is None:
        key_path = cwd / 'key'
    with path_encrypted.open('rt', encoding=encoding) as f1, \
            key_path.open('rt', encoding=encoding) as f2, \
            path_decrypted.open('wt', encoding=encoding) as f3:
        decrypted = decrypt(json.load(f1), json.load(f2))
        f3.write(decrypted)

三、測試

將要加密的文件放到py文件同級目錄下,運行以下將1.txt加密。

encrypt_file("D:/PyCharm Community Edition 2021.3.2/Workplace/encryption/1.txt")

 將要解密的文件和密鑰放到py文件同級目錄下,運行以下將1.txt解密還原。

decrypt_file("D:/PyCharm Community Edition 2021.3.2/Workplace/encryption/1.txt")

到此這篇關于python加密打包程序的文章就介紹到這了,更多相關python加密打包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python的@裝飾器的作用小結

    Python的@裝飾器的作用小結

    本文給大家講解Python的@裝飾器的用途,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • NumPy之矩陣向量線性代數(shù)等操作示例

    NumPy之矩陣向量線性代數(shù)等操作示例

    這篇文章主要為大家介紹了NumPy之矩陣向量線性代數(shù)等操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 用TensorFlow實現(xiàn)戴明回歸算法的示例

    用TensorFlow實現(xiàn)戴明回歸算法的示例

    這篇文章主要介紹了用TensorFlow實現(xiàn)戴明回歸算法的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Python map函數(shù)及Python map()函數(shù)的用法

    詳解Python map函數(shù)及Python map()函數(shù)的用法

    map() 會根據提供的函數(shù)對指定序列做映射。下面通過本文給大家介紹Python map函數(shù)及Python map()函數(shù)的用法,需要的朋友參考下吧
    2017-11-11
  • 解決Python3中的中文字符編碼的問題

    解決Python3中的中文字符編碼的問題

    Unicode是一32位編碼格式,不適合用來傳輸和存儲,所以必須轉換成utf-8,gbk等等。這篇文章主要介紹了Python3中的解決中文字符編碼的問題,需要的朋友可以參考下
    2018-07-07
  • Python中返回字典鍵的值的values()方法使用

    Python中返回字典鍵的值的values()方法使用

    這篇文章主要介紹了Python中返回字典鍵的值的values()方法使用,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • 如何用Python 加密文件

    如何用Python 加密文件

    這篇文章主要介紹了如何用Python 加密文件,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • python通過zlib實現(xiàn)壓縮與解壓字符串的方法

    python通過zlib實現(xiàn)壓縮與解壓字符串的方法

    這篇文章主要介紹了python通過zlib實現(xiàn)壓縮與解壓字符串的方法,較為詳細的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對文件進行壓縮解壓的方法,需要的朋友可以參考下
    2014-11-11
  • wxPython中l(wèi)istbox用法實例詳解

    wxPython中l(wèi)istbox用法實例詳解

    這篇文章主要介紹了wxPython中l(wèi)istbox用法,以實例形式較為詳細的分析了Python使用wxPython中l(wèi)istbox的相關技巧,需要的朋友可以參考下
    2015-06-06
  • 使用Django實現(xiàn)文章與多個標簽關聯(lián)的示例詳解

    使用Django實現(xiàn)文章與多個標簽關聯(lián)的示例詳解

    在構建一個博客或內容管理系統(tǒng)時,經常需要實現(xiàn)文章與標簽的關聯(lián),在 Django 中,我們可以利用 ManyToManyField 來實現(xiàn)文章與標簽的多對多關系,在本文中,我們將詳細探討如何使用 Django 模型實現(xiàn)文章與多個標簽的關聯(lián),需要的朋友可以參考下
    2023-11-11

最新評論