python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python PyCryptodome库

Python PyCryptodome库介绍与实例教程

作者:engchina

PyCryptodome提供了丰富的加密功能,可以满足多种安全需求,本文介绍了几个常见的使用场景,包括对称加密、非对称加密、哈希函数和消息认证码,感兴趣的朋友跟随小编一起看看吧

PyCryptodome是一个强大的Python加密库,提供了各种加密算法和工具。本文将介绍PyCryptodome的基本概念和常见使用场景,并通过示例代码展示如何使用该库。

1. 安装

首先,我们需要安装PyCryptodome库:

pip install pycryptodome

2. 基本概念

PyCryptodome提供了以下几种主要类型的加密算法:

3. 使用场景和示例代码

3.1 对称加密 - AES

AES (Advanced Encryption Standard) 是一种广泛使用的对称加密算法。以下是使用AES加密和解密的示例:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
def encrypt_aes(plaintext, key):
    cipher = AES.new(key, AES.MODE_ECB)
    padded_data = pad(plaintext.encode(), AES.block_size)
    return cipher.encrypt(padded_data)
def decrypt_aes(ciphertext, key):
    cipher = AES.new(key, AES.MODE_ECB)
    padded_data = cipher.decrypt(ciphertext)
    return unpad(padded_data, AES.block_size).decode()
# 生成一个16字节的随机密钥
key = get_random_bytes(16)
# 加密
message = "Hello, PyCryptodome!"
encrypted = encrypt_aes(message, key)
print(f"加密后: {encrypted.hex()}")
# 解密
decrypted = decrypt_aes(encrypted, key)
print(f"解密后: {decrypted}")

3.2 非对称加密 - RSA

RSA是一种常用的非对称加密算法,适用于数据加密和数字签名。以下是RSA加密和解密的示例:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii
# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 加密
message = b"Hello, RSA!"
rsa_public_key = RSA.import_key(public_key)
rsa_public_key = PKCS1_OAEP.new(rsa_public_key)
encrypted = rsa_public_key.encrypt(message)
print(f"加密后: {binascii.hexlify(encrypted)}")
# 解密
rsa_private_key = RSA.import_key(private_key)
rsa_private_key = PKCS1_OAEP.new(rsa_private_key)
decrypted = rsa_private_key.decrypt(encrypted)
print(f"解密后: {decrypted.decode()}")

3.3 哈希函数 - SHA256

哈希函数用于生成消息摘要,常用于数据完整性检查和密码存储。以下是使用SHA256哈希的示例:

from Crypto.Hash import SHA256
def hash_sha256(data):
    hash_object = SHA256.new(data=data.encode())
    return hash_object.hexdigest()
message = "Hello, SHA256!"
hashed = hash_sha256(message)
print(f"SHA256哈希值: {hashed}")

3.4 消息认证码 - HMAC

HMAC (Hash-based Message Authentication Code) 用于验证消息的完整性和真实性。以下是HMAC的使用示例:

from Crypto.Hash import HMAC, SHA256
def create_hmac(key, message):
    hmac = HMAC.new(key, msg=message.encode(), digestmod=SHA256)
    return hmac.hexdigest()
def verify_hmac(key, message, received_mac):
    hmac = HMAC.new(key, msg=message.encode(), digestmod=SHA256)
    try:
        hmac.hexverify(received_mac)
        return True
    except ValueError:
        return False
# 创建HMAC
secret_key = b"my_secret_key"
message = "Hello, HMAC!"
mac = create_hmac(secret_key, message)
print(f"HMAC: {mac}")
# 验证HMAC
is_valid = verify_hmac(secret_key, message, mac)
print(f"HMAC验证结果: {is_valid}")

4. 总结

PyCryptodome提供了丰富的加密功能,可以满足多种安全需求。本文介绍了几个常见的使用场景,包括对称加密、非对称加密、哈希函数和消息认证码。在实际应用中,请根据具体需求选择合适的加密算法和参数,并确保正确管理密钥。

到此这篇关于Python PyCryptodome库介绍与实例的文章就介绍到这了,更多相关Python PyCryptodome库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文