legongju.com
我们一直在努力
2024-12-25 21:56 | 星期三

Python加密与解密实践经验

在Python中实现加密和解密有很多方法,这里我将介绍两种常用的加密算法:AES(高级加密标准)和DES(数据加密标准)。同时,我会使用pycryptodome库来简化操作。

首先,确保已经安装了pycryptodome库。如果没有安装,可以使用以下命令安装:

pip install pycryptodome

接下来,我们将分别介绍AES和DES的加密和解密实现。

AES加密与解密

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import base64

def aes_encrypt(key, plaintext):
    cipher = AES.new(key, AES.MODE_CBC)
    ct_bytes = cipher.encrypt(pad(plaintext, AES.block_size))
    iv = base64.b64encode(cipher.iv).decode('utf-8')
    ct = base64.b64encode(ct_bytes).decode('utf-8')
    return iv + ':' + ct

def aes_decrypt(key, ciphertext):
    iv, ct = ciphertext.split(':')
    iv = base64.b64decode(iv)
    ct = base64.b64decode(ct)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(ct), AES.block_size).decode('utf-8')

# 示例
key = get_random_bytes(16)  # AES密钥长度可以是16(AES-128)、24(AES-192)或32(AES-256)字节
plaintext = b'Hello, World!'

ciphertext = aes_encrypt(key, plaintext)
print(f'加密后的文本: {ciphertext}')

decrypted_text = aes_decrypt(key, ciphertext)
print(f'解密后的文本: {decrypted_text}')

DES加密与解密

from Crypto.Cipher import DES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import base64

def des_encrypt(key, plaintext):
    cipher = DES.new(key, DES.MODE_CBC)
    ct_bytes = cipher.encrypt(pad(plaintext, DES.block_size))
    iv = base64.b64encode(cipher.iv).decode('utf-8')
    ct = base64.b64encode(ct_bytes).decode('utf-8')
    return iv + ':' + ct

def des_decrypt(key, ciphertext):
    iv, ct = ciphertext.split(':')
    iv = base64.b64decode(iv)
    ct = base64.b64decode(ct)
    cipher = DES.new(key, DES.MODE_CBC, iv)
    return unpad(cipher.decrypt(ct), DES.block_size).decode('utf-8')

# 示例
key = get_random_bytes(8)  # DES密钥长度必须是8字节
plaintext = b'Hello, World!'

ciphertext = des_encrypt(key, plaintext)
print(f'加密后的文本: {ciphertext}')

decrypted_text = des_decrypt(key, ciphertext)
print(f'解密后的文本: {decrypted_text}')

以上代码展示了如何使用AES和DES算法进行加密和解密。请注意,密钥的长度和加密模式可能会影响加密的安全性。在实际应用中,请确保使用合适的密钥长度和加密模式。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/18424.html

相关推荐

  • Python Unicode如何进行测试

    Python Unicode如何进行测试

    在Python中,你可以使用unittest模块来编写针对Unicode字符串的测试。以下是一个简单的示例,展示了如何创建一个测试用例来测试Unicode字符串: 首先,确保你已经...

  • Python怎样高效处理大规模数据

    Python怎样高效处理大规模数据

    在Python中,高效处理大规模数据通常需要结合多种技术和方法。以下是一些建议: 使用NumPy:NumPy是Python中用于数值计算的核心库,它提供了高效的数组操作和数学...

  • python assert怎样用于调试

    python assert怎样用于调试

    在Python中,assert语句用于在代码中插入调试断言。如果断言的条件为真(True),则代码正常执行;如果条件为假(False),则会引发AssertionError异常。这有助于...

  • python set如何检查成员

    python set如何检查成员

    在Python中,您可以使用in关键字来检查一个元素是否存在于集合(set)中。以下是一个示例:
    # 创建一个集合
    my_set = {1, 2, 3, 4, 5} # 检查元素是否...

  • Python加密与解密案例分析

    Python加密与解密案例分析

    在Python中,我们可以使用多种库进行加密和解密操作 导入所需库: import base64
    from Crypto.Cipher import AES
    from Crypto.Random import get_rand...

  • Python加密与解密工具好用吗

    Python加密与解密工具好用吗

    Python 加密与解密工具是非常好用的。Python 提供了许多内置库和第三方库,可以方便地实现数据的加密和解密。以下是一些常用的库和示例代码: 内置库 hashlib:用...

  • Python加密与解密常见错误

    Python加密与解密常见错误

    在Python中进行加密和解密时,可能会遇到一些常见错误。以下是一些典型的错误及其解决方法:
    1. 密钥错误
    错误示例:
    from Crypto.Cipher import...

  • Python加密与解密库有哪些

    Python加密与解密库有哪些

    Python中常用的加密与解密库包括: cryptography:这是一个功能强大的加密库,支持对称加密、非对称加密、哈希算法等多种加密方式。它易于使用且高度可配置,提供...