HMAC SHA256对称加密

HMAC SHA256 是一种对称加密算法。以下是关于 HMAC SHA256 以及对称加密和非对称加密的详细解释:

HMAC SHA256

HMAC(Hash-based Message Authentication Code) 是一种基于哈希函数的消息认证码,它通过结合一个秘密密钥和一个哈希算法来生成消息摘要,从而验证消息的完整性和真实性。HMAC SHA256 使用 SHA256 哈希函数来生成 HMAC。

  • 对称加密:对称加密算法使用相同的密钥进行加密和解密。在 HMAC 中,生成和验证消息认证码时使用的是同一个密钥。
  • 应用:HMAC SHA256 广泛用于数据完整性验证和消息认证,比如在 JWT(JSON Web Token)的签名中。

对称加密与非对称加密

对称加密

  1. 定义
    • 使用同一个密钥进行加密和解密的加密方式。
  2. 特性
    • 加密和解密速度快,适用于大数据量的加密。
    • 密钥管理是一个难题,因为所有参与通信的各方都必须安全地共享和存储密钥。
  3. 常见算法
    • AES(Advanced Encryption Standard)
    • DES(Data Encryption Standard)
    • 3DES(Triple DES)
    • HMAC(Hash-based Message Authentication Code)

非对称加密

  1. 定义
    • 使用一对相关联的密钥进行加密和解密的加密方式,其中一个密钥用于加密,另一个密钥用于解密。密钥对由公钥和私钥组成。
  2. 特性
    • 公钥可以公开分发,而私钥必须保密。发送方使用接收方的公钥加密消息,只有接收方的私钥能解密。
    • 加密和解密速度较慢,适用于小数据量的加密或用于加密对称密钥。
  3. 常见算法
    • 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 是一种对称加密算法,用于生成和验证消息认证码,以确保数据的完整性和真实性。它使用相同的密钥进行消息的认证和验证。对称加密算法适合于高效的大数据加密,而非对称加密算法适用于小数据量的加密和密钥交换,具有不同的应用场景和特性。

posted @   gongchengship  阅读(1308)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示