Python 数据加密与解密方法

Python 数据加密与解密方法

Python 数据加密与解密方法

介绍

数据在传输和存储过程中往往需要进行加密保护,以防止数据被未授权的人员访问和篡改。Python 提供了一些强大的加密和解密工具,开发人员可以利用这些工具轻松实现数据的加密和解密。

本文将详细介绍一些常用的 Python 数据加密和解密方法,包括对称加密、非对称加密、哈希算法和消息认证码等。

对称加密

对称加密算法使用同一个密钥进行加密和解密。常见的对称加密算法有 DES、AES 和 Blowfish 等。

DES 加密

DES(Data Encryption Standard)是一种对称加密算法,使用 64 位密钥对数据进行加密和解密。Python 提供了 pyDes 模块来实现 DES 加密。

以下是使用 DES 加密和解密的示例代码:

import pyDes

# 64 位密钥
key = b'abcdefgh'
des = pyDes.des(key, pyDes.ECB, pad=None, padmode=pyDes.PAD_PKCS5)

# 加密
data = b'hello world'
encrypted_data = des.encrypt(data)

# 解密
decrypted_data = des.decrypt(encrypted_data)

print('加密后的数据:', encrypted_data)
print('解密后的数据:', decrypted_data)

运行结果:

加密后的数据: b';\xaez\xbd\x04\xf1H\x04\x06\xc7\xa1\xa5'
解密后的数据: b'hello world'

AES 加密

AES(Advanced Encryption Standard)是一种对称加密算法,支持 128、192 和 256 位密钥。Python 提供了 cryptography 模块来实现 AES 加密。

以下是使用 AES 加密和解密的示例代码:

from cryptography.fernet import Fernet

# 128 位密钥
key = Fernet.generate_key()

cipher_suite = Fernet(key)

# 加密
data = b'hello world'
encrypted_data = cipher_suite.encrypt(data)

# 解密
decrypted_data = cipher_suite.decrypt(encrypted_data)

print('加密后的数据:', encrypted_data)
print('解密后的数据:', decrypted_data)

运行结果:

加密后的数据: b'gAAAAABgsvLWTNF4l49fUpYR2A3HB1AS1eUbhul-ZdKuiXlaVYzp-JEdbWn3TNbUnUzrs5mB0T27aQBynXJsj2OZzFknxb_zMA=='
解密后的数据: b'hello world'

非对称加密

非对称加密算法使用一对密钥进行加密和解密,分别是公钥和私钥。常见的非对称加密算法有 RSA 和 ECC 等。

RSA 加密

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,使用一对公钥和私钥对数据进行加密和解密。Python 提供了 cryptography 模块来实现 RSA 加密。

以下是使用 RSA 加密和解密的示例代码:

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.backends import default_backend

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

# 公钥加密
data = b'hello world'
encrypted_data = public_key.encrypt(
    data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 私钥解密
decrypted_data = private_key.decrypt(
    encrypted_data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print('加密后的数据:', encrypted_data)
print('解密后的数据:', decrypted_data)

运行结果:

加密后的数据: b'?\xce\xcayCRZ\x99Gq\xea)\xb2\xf7[\xdaa\x0f\xef\xc3\xc4\xe7P\xecE\xe0\xa6\xfd 9K]\xa0}\x8d\xf5\...'
解密后的数据: b'hello world'

哈希算法

哈希算法将任意长度的数据映射为固定长度的散列值。常见的哈希算法有 MD5、SHA-1 和 SHA-256 等。

MD5 哈希

MD5(Message Digest Algorithm 5)是一种广泛使用的哈希算法,生成长度为 128 位的散列值。Python 提供了 hashlib 模块来实现 MD5 哈希。

以下是使用 MD5 哈希的示例代码:

import hashlib

data = b'hello world'

# 计算 MD5 哈希值
hash_value = hashlib.md5(data).hexdigest()

print('MD5 哈希值:', hash_value)

运行结果:

MD5 哈希值: 5eb63bbbe01eeed093cb22bb8f5acdc3

SHA-256 哈希

SHA-256(Secure Hash Algorithm 256-bit)是一种安全的哈希算法,生成长度为 256 位的散列值。Python 提供了 hashlib 模块来实现 SHA-256 哈希。

以下是使用 SHA-256 哈希的示例代码:

import hashlib

data = b'hello world'

# 计算 SHA-256 哈希值
hash_value = hashlib.sha256(data).hexdigest()

print('SHA-256 哈希值:', hash_value)

运行结果:

SHA-256 哈希值: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

消息认证码

消息认证码(Message Authentication Code)是一种使用密钥对数据进行完整性校验和认证的技术。常见的消息认证码算法有 HMAC 和 CMAC 等。

HMAC 消息认证码

HMAC(Keyed-Hash Message Authentication Code)是一种基于哈希函数和密钥的消息认证码算法。Python 提供了 hmac 模块来实现 HMAC 消息认证码。

以下是使用 HMAC 消息认证码的示例代码:

import hmac
import hashlib

key = b'secret_key'
data = b'hello world'

# 计算 HMAC 值
hmac_value = hmac.new(key, data, hashlib.sha256).hexdigest()

print('HMAC 值:', hmac_value)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程