Python数据加密解密

Python数据加密解密

Python数据加密解密

数据加密是一种保护数据隐私,防止数据被未授权人员访问或篡改的重要方法。在Python中,有多种加密算法可以用来对数据进行加密和解密,本文将详细介绍几种常用的加密算法及其在Python中的应用。

1. 对称加密算法

对称加密算法是最简单也是最常用的一种加密算法,它使用相同的密钥对明文和密文进行加密和解密。常见的对称加密算法包括AES、DES等。

1.1 使用AES对称加密算法

AES(Advanced Encryption Standard)是一种对称加密算法,它可以使用不同长度的密钥进行加密和解密。在Python中,我们可以使用cryptography库来实现AES加密和解密。

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.padding import PKCS7
from cryptography.hazmat.primitives import serialization

def encrypt_aes(key, data):
    cipher = Cipher(algorithms.AES(key), modes.CBC(b'\x00'*16), backend=default_backend())
    encryptor = cipher.encryptor()
    padder = PKCS7(128).padder()
    padded_data = padder.update(data) + padder.finalize()
    ct = encryptor.update(padded_data) + encryptor.finalize()
    return ct

def decrypt_aes(key, ct):
    cipher = Cipher(algorithms.AES(key), modes.CBC(b'\x00'*16), backend=default_backend())
    decryptor = cipher.decryptor()
    padded_ct = decryptor.update(ct) + decryptor.finalize()
    unpadder = PKCS7(128).unpadder()
    data = unpadder.update(padded_ct) + unpadder.finalize()
    return data

# 生成AES密钥
key = b'1234567812345678'
# 明文
data = b'Hello, World!'
# 加密
ct = encrypt_aes(key, data)
# 解密
decrypted_data = decrypt_aes(key, ct)
print(decrypted_data.decode('utf-8'))

运行结果:

Hello, World!

以上代码演示了如何使用AES对称加密算法对数据进行加密和解密。

2. 非对称加密算法

非对称加密算法使用一对公钥和私钥来对数据进行加密和解密,公钥用于加密数据,私钥用于解密数据。常见的非对称加密算法包括RSA、ECC等。

2.1 使用RSA非对称加密算法

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它可以使用不同长度的密钥对数据进行加密和解密。在Python中,我们可以使用cryptography库来实现RSA加密和解密。

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

def generate_rsa_key():
    private_key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048,
    )
    return private_key

def encrypt_rsa(public_key, data):
    ct = public_key.encrypt(
        data,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )
    return ct

def decrypt_rsa(private_key, ct):
    data = private_key.decrypt(
        ct,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )
    return data

# 生成RSA密钥对
private_key = generate_rsa_key()
public_key = private_key.public_key()
# 明文
data = b'Hello, World!'
# 加密
ct = encrypt_rsa(public_key, data)
# 解密
decrypted_data = decrypt_rsa(private_key, ct)
print(decrypted_data.decode('utf-8'))

运行结果:

Hello, World!

以上代码演示了如何使用RSA非对称加密算法对数据进行加密和解密。

3. 消息认证码(MAC)

消息认证码(Message Authentication Code,MAC)是一种用于保证消息完整性和真实性的技术,在加密通信中起到非常重要的作用。常见的MAC算法包括HMAC、CMAC等。

3.1 使用HMAC算法生成消息认证码

HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码算法,它使用密钥对消息进行签名,以防止消息被篡改。在Python中,我们可以使用cryptography库来实现HMAC算法。

from cryptography.hazmat.primitives import hmac
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend

def generate_hmac(key, data):
    h = hmac.HMAC(key, hashes.SHA256(), backend=default_backend())
    h.update(data)
    return h.finalize()

# 密钥
key = b'1234567812345678'
# 消息
data = b'Hello, World!'
# 生成HMAC
mac = generate_hmac(key, data)
print(mac)

运行结果:

b'\x8c\x8a\x06\x99...\xcd'

以上代码演示了如何使用HMAC算法生成消息认证码。

结语

本文介绍了几种常用的加密算法及其在Python中的应用,包括对称加密算法、非对称加密算法和消息认证码。在实际应用中,根据具体需求和安全要求选择合适的加密算法,保护数据的安全性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程