Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python脚本加密

作者:原来是梦   发布日期:2026-02-21   浏览:15

# 示例代码:使用PyCrypto库对Python脚本进行加密

# 首先需要安装PyCrypto库,可以通过pip install pycrypto来安装

from Crypto.Cipher import AES
import base64
import os

# 加密函数
def encrypt_script(script, key):
    # 确保key长度为16, 24或32字节(AES-128, AES-192或AES-256)
    key = key.ljust(32, '0')[:32]

    # 创建AES对象
    aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)

    # 对脚本进行填充以确保其长度是16的倍数
    script_padded = script + (16 - len(script) % 16) * chr(16 - len(script) % 16)

    # 加密
    encrypted_script = aes.encrypt(script_padded.encode('utf-8'))

    # 使用base64编码返回加密后的脚本
    return base64.b64encode(encrypted_script).decode('utf-8')

# 解密函数
def decrypt_script(encrypted_script, key):
    # 确保key长度为16, 24或32字节(AES-128, AES-192或AES-256)
    key = key.ljust(32, '0')[:32]

    # 创建AES对象
    aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)

    # 解码base64编码的加密脚本
    encrypted_script_bytes = base64.b64decode(encrypted_script)

    # 解密
    decrypted_script_padded = aes.decrypt(encrypted_script_bytes).decode('utf-8')

    # 去除填充
    padding_length = ord(decrypted_script_padded[-1])
    decrypted_script = decrypted_script_padded[:-padding_length]

    return decrypted_script

# 示例用法
if __name__ == "__main__":
    script = "print('Hello, World!')"
    key = "my_secret_key"

    encrypted = encrypt_script(script, key)
    print("Encrypted Script:", encrypted)

    decrypted = decrypt_script(encrypted, key)
    print("Decrypted Script:", decrypted)

解释说明:

  1. 加密函数 encrypt_script:

    • 接受两个参数:要加密的脚本字符串和密钥。
    • 密钥长度必须是16、24或32字节(对应AES-128、AES-192或AES-256)。这里通过在密钥后面填充字符'0'来确保其长度为32字节。
    • 使用AES算法的ECB模式进行加密。为了使脚本长度为16的倍数,进行了填充。
    • 加密后的结果使用base64编码以确保可以安全地传输和存储。
  2. 解密函数 decrypt_script:

    • 接受两个参数:加密后的脚本字符串和密钥。
    • 同样确保密钥长度为32字节。
    • 使用AES算法的ECB模式进行解密,并去除填充部分。
  3. 示例用法:

    • 演示了如何加密和解密一个简单的Python脚本。
    • 输出加密后的脚本和解密后的脚本以验证加密和解密过程是否正确。

请注意,ECB模式不是最安全的加密模式,建议在实际应用中使用更安全的模式如CBC模式,并结合适当的密钥管理和初始化向量(IV)。

上一篇:python列表切片操作方法

下一篇:python for excel

大家都在看

python excel 库

python时间格式

pythoneval函数用法

列表切片操作python

python读取文件路径

staticmethod在python中有

python 保存json文件

python开发windows应用程序

python中len是什么意思

python 私有函数

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站