HMAC SHA256 是一种对称加密算法。以下是关于 HMAC SHA256 以及对称加密和非对称加密的详细解释:
HMAC SHA256
HMAC(Hash-based Message Authentication Code) 是一种基于哈希函数的消息认证码,它通过结合一个秘密密钥和一个哈希算法来生成消息摘要,从而验证消息的完整性和真实性。HMAC SHA256 使用 SHA256 哈希函数来生成 HMAC。
- 对称加密:对称加密算法使用相同的密钥进行加密和解密。在 HMAC 中,生成和验证消息认证码时使用的是同一个密钥。
- 应用:HMAC SHA256 广泛用于数据完整性验证和消息认证,比如在 JWT(JSON Web Token)的签名中。
对称加密与非对称加密
对称加密
- 定义:
- 使用同一个密钥进行加密和解密的加密方式。
- 特性:
- 加密和解密速度快,适用于大数据量的加密。
- 密钥管理是一个难题,因为所有参与通信的各方都必须安全地共享和存储密钥。
- 常见算法:
- AES(Advanced Encryption Standard)
- DES(Data Encryption Standard)
- 3DES(Triple DES)
- HMAC(Hash-based Message Authentication Code)
非对称加密
- 定义:
- 使用一对相关联的密钥进行加密和解密的加密方式,其中一个密钥用于加密,另一个密钥用于解密。密钥对由公钥和私钥组成。
- 特性:
- 公钥可以公开分发,而私钥必须保密。发送方使用接收方的公钥加密消息,只有接收方的私钥能解密。
- 加密和解密速度较慢,适用于小数据量的加密或用于加密对称密钥。
- 常见算法:
- RSA(Rivest-Shamir-Adleman)
- ECC(Elliptic Curve Cryptography)
- DSA(Digital Signature Algorithm)
具体示例
HMAC SHA256 示例
以下是使用 Python 中的 hmac
模块来生成和验证 HMAC SHA256 签名的示例:
import hmac
import hashlib
# 秘钥
secret_key = b'secret'
# 消息
message = b'This is a secret message'
# 生成 HMAC SHA256
hmac_signature = hmac.new(secret_key, message, hashlib.sha256).hexdigest()
print(f'HMAC SHA256: {hmac_signature}')
对称加密示例(AES)
以下是使用 Python 中的 cryptography
模块来进行 AES 对称加密的示例:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend
import os
# 秘钥和 IV
key = os.urandom(32) # 256-bit 密钥
iv = os.urandom(16) # 128-bit 初始向量
# 加密器
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
# 数据
data = b'This is a secret message'
# 填充数据
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(data) + padder.finalize()
# 加密
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
print(f'Encrypted data: {encrypted_data}')
# 解密器
decryptor = cipher.decryptor()
# 解密
decrypted_padded_data = decryptor.update(encrypted_data) + decryptor.finalize()
# 去除填充
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
decrypted_data = unpadder.update(decrypted_padded_data) + unpadder.finalize()
print(f'Decrypted data: {decrypted_data}')
结论
HMAC SHA256 是一种对称加密算法,用于生成和验证消息认证码,以确保数据的完整性和真实性。它使用相同的密钥进行消息的认证和验证。对称加密算法适合于高效的大数据加密,而非对称加密算法适用于小数据量的加密和密钥交换,具有不同的应用场景和特性。
标签:加密,密钥,对称,SHA256,data,HMAC From: https://www.cnblogs.com/gongchengship/p/18284495