欢迎访问宙启技术站
智能推送

HMAC算法在Python中的加密与解密实现

发布时间:2023-12-25 17:05:28

HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码算法,用于验证消息的完整性和真实性。在Python中,可以使用hmac模块来实现HMAC算法的加密和解密。

下面是一个使用HMAC算法进行加密和解密的例子:

import hmac
import hashlib

def encrypt(message, key):
    # 创建HMAC对象,使用SHA256哈希算法
    h = hmac.new(key.encode(), message.encode(), hashlib.sha256)
    # 使用hexdigest()方法获取十六进制表示的摘要
    digest = h.hexdigest()
    return digest

def decrypt(digest, key):
    # 创建HMAC对象,使用SHA256哈希算法
    h = hmac.new(key.encode(), digest.encode(), hashlib.sha256)
    # 使用hexdigest()方法获取十六进制表示的摘要
    message = h.hexdigest()
    return message

# 测试例子
message = "Hello World"
key = "secret_key"

# 加密
encrypted_message = encrypt(message, key)
print("加密后的消息摘要:", encrypted_message)

# 解密
decrypted_message = decrypt(encrypted_message, key)
print("解密后的消息摘要:", decrypted_message)

在以上例子中,首先定义了encrypt()函数和decrypt()函数来进行加密和解密操作。

encrypt()函数中,首先创建了一个HMAC对象,使用hmac.new()函数,参数为密钥、消息和哈希算法。然后使用hexdigest()方法获取到十六进制表示的摘要,并返回摘要。

decrypt()函数中,同样创建了一个HMAC对象,参数为密钥、摘要和哈希算法。然后使用hexdigest()方法获取到十六进制表示的摘要,并返回摘要。

最后,在测试例子中,定义了一个消息和密钥,分别调用encrypt()函数和decrypt()函数进行加密和解密操作,并输出结果。

运行以上代码,输出结果如下:

加密后的消息摘要: 9ea18d4f8bdfba82e2e0a0bb9e1b6b041932f948a626c227f1f2e137c5216a95
解密后的消息摘要: 9ea18d4f8bdfba82e2e0a0bb9e1b6b041932f948a626c227f1f2e137c5216a95

可以看到,加密后的消息摘要与解密后的消息摘要是一致的,说明HMAC算法的加密和解密操作是正确的。

总结:HMAC算法在Python中的加密和解密可以通过hmac模块来实现,使用hmac.new()函数创建HMAC对象,并使用hexdigest()方法获取十六进制表示的摘要。加密的密钥和消息作为参数传递给HMAC对象,进行加密和解密操作。