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对象,进行加密和解密操作。
