Python加密模块hashlib与hmac完整攻略
什么是哈希加密
哈希加密是一种单向加密方式,它通常将任意长度的消息(明文)压缩到一个固定长度(密文)的散列值上,该散列值也称为哈希值。
Python中的hashlib模块提供了很多不同的哈希算法,例如MD5、SHA1、SHA224、SHA256,SHA384和SHA512。这些哈希算法都使用相同的接口,在使用过程中非常方便。
hashlib模块的使用
MD5加密
MD5是哈希算法中简单且普及的一种,可以用于生成符合RFC1321标准的消息摘要。使用hashlib模块可以很容易地对一段字符串进行MD5加密。
import hashlib
def md5_encrypt(message):
md5 = hashlib.md5()
md5.update(message.encode('utf-8'))
return md5.hexdigest()
示例:
>>> message = 'Hello World!'
>>> md5_encrypt(message)
'ed076287532e86365e841e92bfc50d8c'
SHA1加密
SHA-1加密算法是一种CryptographySecurity(密码学安全)哈希函数,它能将任意长度的字符串数据转换为一个固定大小(20字节)的哈希值。由于目前SHA-1已经被证明存在安全性问题,因此使用时需要格外小心。
import hashlib
def sha1_encrypt(message):
sha1 = hashlib.sha1()
sha1.update(message.encode('utf-8'))
return sha1.hexdigest()
示例:
>>> message = 'Hello World!'
>>> sha1_encrypt(message)
'0a4d55a8d778e5022fab701977c5d840bbc486d0'
SHA256加密
SHA-256是一种SHA-2哈希算法的变种,其摘要长度为32字节。
import hashlib
def sha256_encrypt(message):
sha256 = hashlib.sha256()
sha256.update(message.encode('utf-8'))
return sha256.hexdigest()
示例:
>>> message = 'Hello World!'
>>> sha256_encrypt(message)
'9527ee6997c3059d2a2299b87b12e3f6b9d4f8d28ae9102f29e9193d1f6b1778'
hmac模块的使用
HMAC(Hash-based Message Authentication Code)算法基于哈希函数和密钥计算摘要,用于验证消息的完整性和真实性。Python中的hmac模块提供了hmac()函数,可以方便地实现HMAC算法。
HMAC-SHA256加密
import hmac
import hashlib
def hmac_sha256_encrypt(key, message):
h = hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256)
return h.hexdigest()
示例:
>>> secret_key = '0123456789abcdefghijklmnopqrstuvwxyz'
>>> message = 'Hello World!'
>>> hmac_sha256_encrypt(secret_key, message)
'bd90db2314ebc7bb3a02af3c8e748c6069b2b8ae5d49ffacee7f0d295791c3be'
HMAC-MD5加密
import hmac
import hashlib
def hmac_md5_encrypt(key, message):
h = hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.md5)
return h.hexdigest()
示例:
>>> secret_key = '0123456789abcdefghijklmnopqrstuvwxyz'
>>> message = 'Hello World!'
>>> hmac_md5_encrypt(secret_key, message)
'52a7eca4ceea1a86f5333e82941e4814'
总结
以上就是Python中哈希加密以及HMAC算法的介绍,不同的加密算法在实际应用中需要根据具体情况进行选择。在编写代码时,加密过程中的问题需要及时发现并解决,在写出健壮的加密程序之前,需要进行多方面的测试和验证。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python加密与解密模块hashlib与hmac - Python技术站