python使用HMAC算法
简介
Hmac算法:Keyed-Hashing for Message Authentication
。
它通过一个标准算法,在计算哈希的过程中,把key
混入计算过程中。
和我们自定义的加salt算法不同,Hmac
算法针对所有哈希算法都通用,无论是MD5
还是SHA-1
。采用Hmac替代我们自己的salt算法,可以使程序算法更标准化,也更安全。
Python自带的hmac
模块实现了标准的Hmac
算法。我们来看看如何使用hmac实现带key的哈希。
我们首先需要准备待计算的 原始消息 message
和 固定key
。
注意:
digest() 返回的是二进制数据
hexdigest() 返回的是十六进制数据
列举几种常用的情况:
第一种: digestmod 模式选择为 hashlib.md5
,返回的数据是长度32位
hmac.new(key.encode(), message.encode(), hashlib.md5).hexdigest()
第二种: digestmod 模式选择为 hashlib.sha1
,返回的 数据是长度40位
hmac.new(key.encode(), message.encode(), hashlib.sha1).hexdigest()
第三种: digestmod 模式选择为 hashlib.sha1
但是再base64
编码一下
hmac.new(key.encode(), message.encode(), hashlib.sha1).digest()
base64.b64encode(result).decode()
汇总代码如下:
# -*- coding:UTF-8 -*-
import base64
import hashlib
import hmac
def hamc_encrypt(message, key):
result1 = hmac.new(key.encode(), message.encode(), hashlib.md5).hexdigest()
result2 = hmac.new(key.encode(), message.encode(), hashlib.sha1).hexdigest()
result3 = hmac.new(key.encode(), message.encode(), hashlib.sha1).digest()
_sig = base64.b64encode(result3).decode()
print(result1)
print(result2)
print(_sig)
if __name__ == "__main__":
mess = "Hello, world!"
key = "secret_key"
hamc_encrypt(mess, key)
结果:
7f16a49c61d4ed638f211e99622db817 # ---> 长度32位
de736f3c775f014f30fe73e057feccea0e31ba8d # ---> 长度40位
3nNvPHdfAU8w/nPgV/7M6g4xuo0= # ---> 长度不固定
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfjegj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13