📜  使用 python 进行加密(1)

📅  最后修改于: 2023-12-03 15:36:33.574000             🧑  作者: Mango

使用 Python 进行加密

Python 是一种强大的编程语言,在加密数据方面有许多强大的库可以使用。本文将介绍 Python 中的加密方法,包括对称加密和非对称加密,以及如何使用这些技术来保护数据安全。

对称加密

对称加密是一种加密技术,使用相同的密钥对数据进行加密和解密。由于数据在传输过程中使用相同的密钥加密和解密,所以对称加密也被称为共享密钥加密。

在 Python 中,可以使用 PyCrypto 库或 Cryptography 库来进行对称加密。下面是一个例子,演示如何使用 PyCrypto 实现对称加密:

from Crypto.Cipher import AES
import base64

key = 'mysecretpassword'   # 密钥必须是 16, 24 或 32 字节长度
plaintext = 'This is some plaintext'

# 对明文进行补位操作
BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
plaintext = pad(plaintext)

# 使用 AES 进行加密
cipher = AES.new(key)
ciphertext = cipher.encrypt(plaintext)

# 对密文进行 base64 编码
ciphertext = base64.b64encode(ciphertext)

print('加密后的数据:', ciphertext)
非对称加密

非对称加密是一种加密技术,使用一对密钥来对数据进行加密和解密。公钥可以公开传输,但私钥必须保持保密。

在 Python 中,可以使用 RSA 密钥对来进行非对称加密。下面是一个例子,演示如何使用 Cryptography 库实现非对称加密:

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes

# 生成 RSA 密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

plaintext = b'This is some plaintext'

# 加密数据
ciphertext = public_key.encrypt(
    plaintext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print('加密后的数据:', ciphertext.hex())
总结

Python 中有许多强大的加密库,使程序员可以轻松地实现对称加密和非对称加密。无论您需要加密哪种数据,使用 Python 加密库都可能是特定项目的正确选择。对称加密在处理速度方面非常快,而非对称加密则提供更高的安全性。