首页 > 编程知识 正文

Hmacsha1,hmacsha256算法

时间:2023-05-04 17:58:33 阅读:16705 作者:2833

首先看看HmacSHA1加密和SHA1加密的代码

#!/usr/mld by/env python #-*-coding : utf-8-* ' ' created on1/31/10:03 am @ author : chenliang @ function : hmac sha1 vs sha1' ' importsysreload (sys (sys.set default encoding () ) ) mporthmacdefsha1(msg ) : ''' sha1加密: param msg :3360 return :长度40位摘要信息' ' sha=hashlib.sha1 ) )。 return sha.hexdigest () defHMAC_sha1 ) key, msg ) : ''' hmac sha1加密: param密钥:param msg:等待加密消息:return:长度为40位的摘要信息' ' m=hmac.new hashlib.sha1(returnm.hexdigest ) ) printhmac_sha1 ) fkewtiz9t E0 fwlqks 4g8hedqaspzfdr4(,me ) ) me

1db0e 9132 A8 dff 51e 3a 4d 47497 e29 a 500087 d a9 a B1 C1 d 8736 f 20 db3FB6C1 c 66b 1455 ed 43909 f0d 8结果显示,HmacSHA1算法和SHA1算法针对任意长度的消息

其实答案很简单。

HMAC vs. raw SHA-1这篇文章中有一个有趣的说明。 翻译后如下

我之前写了,请不要在意具体的摘要计算结果。 重点是解释的有趣和简洁

如果你想向喜欢的人表白,我想出一首优美的十四行诗,但最后我决定只说简单的' i love you '。

想要告白的消息会完好无损地传达给喜欢的妹妹,但不想让别人知道的话,可以事先知道密码nxdcc,然后使用SHA-1算法从消息中生成摘要。

与“i love you”相对应的SHA-1摘要是b b7b 1901 d99 E8 b 26 bb 91d2 de BDB 7d7f 24 b 3158 cf

当你喜欢的妹妹收到消息后,使用SHA-1算法重新计算摘要,并与你发送的摘要进行比较。 如果一致,则表示消息是正确的。

但是,总是有这么刁钻的人试图拦截你的信息,用另一条消息' don't call me anymore '代替,生成新的摘要。 e 267 e 18 f 05 CB6e a3 b 10 b 761 BBA c21 a 0f 92b b8d 0d。 你喜欢的妹妹收到消息后,摘要信息不一致了,我不敢相信了。

虽然看起来很严厉,但是你向妹妹说明了。 我保证今后这种事不会再发生了。 你和妹妹约定在计算hash摘要信息时在消息前加上文本' our secret key.'。 也就是说,新的完整信息是“our secret key.i love you”。 以这种方式,从同一消息中生成以下摘要信息:

e 0759e9b 59 BDD6d 864 d 29 ce 3a 502 ADB 6257 f 7615,原文中的此值计算错误,已提交注释。

此时,那些刁难的人仅仅简单地置换摘要信息是没有效果的。 因为你妹妹使用key msg得到的结果和置换后的摘要信息不一致。 这样,除非别人知道你的私钥,否则不能生成虚假信息。

但另一个问题是SHA-1和HMAC的区别。

使用迭代算法计算SHA-1,首先将消息顺序地划分成64字节的块,并将这些块合并生成20字节的摘要信息。 但是,您的消息可以是任意长度,并且SHA根据其迭代性质在64字节块之后继续计算块,因此此时会出现问题。

刁民再次试图更改你的信息。 他们可能只是把更多的数据添加到你的消息中。 因为您的密钥是在上一个块中计算的,所以此时后续添加的消息不受您的密钥的影响。

如果在消息后面简单地添加“but please don't call me anymore”,计算新的摘要并发送给喜欢的妹妹,妹妹会认为整个消息就是你的意思。 (这里的具体计算方法需要参照sha1算法的实现)

像这样大写的GG刻在你的脸上!

但是,没有必要慌张。 我们有HMAC。 HMAC解决了这个问题。 HMAC在整个散列进程中有效地封装消息隐藏密钥,并且不能在末尾添加数据。 具体解决方案请参阅实现HMAC。

根据维基百科,没有找到已知的HMAC消息扩展攻击。

恭喜你。 妹妹得到了。 请开始你的性福之旅。

到此为止,实际上HmacSHA1加密和SHA1加密的区别很明显,希望大家也能理解。

参考:

我记得HMAC vs. raw SHA-1极客学院-hmac极客学院-hashlib称赞过我哦。

从计算机的各个方向精心整理入门、高级、实战视频课程和电子书,按目录合理分类,总能找到需要的学习资料,还等什么? 关注下载吧!

念念不忘,必有回响,小伙伴们帮我点个赞吧,非常感谢。

我是职场亮哥,YY高级软件工程师,4年工作经验,咸鱼不肯打头阵的斜杠程序员。

听我说。 进步很多,程序的人生是穿梭

如果幸运的话,请点【赞】,然后跟进。 希望你能顺便评论鼓励我。

职场亮哥文章列表:其他文章

本人所有文章、回答都与版权保护平台有合作,著作权归职场亮哥所有,未经授权,转载必究!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。