请教一个 HMAC-SHA1 加密问题

2017-07-04 16:25:41 +08:00
 dreamage
0015025c01000000001a1ecf006a0000edd9ff145494a6305fc1fe38c585e589f6fa9880

最后 20bytes 是 HMAC-SHA1 加密结果,key 是 123456

https://1024tools.com/hmac 用 0015025c01000000001a1ecf006a0000 验证得不到 edd9ff145494a6305fc1fe38c585e589f6fa9880

有人知道这是经过什么运算了吗?请大家推理(猜)一下……
4253 次点击
所在节点    编程
13 条回复
dreamage
2017-07-04 16:36:06 +08:00
wsy2220
2017-07-04 17:25:06 +08:00
没毛病,原文要先转成二进制
wsy2220
2017-07-04 17:25:43 +08:00
Kilerd
2017-07-04 18:16:56 +08:00
这是签名!!!!不是加密!!!!!!
dreamage
2017-07-05 10:38:18 +08:00
@wsy2220
最前面的 00 要变成 00000000 吗 还是省略掉,试了各种方法还是得不到这个结果。。
dreamage
2017-07-05 10:38:55 +08:00
@Kilerd 是……校验。。
wsy2220
2017-07-05 10:59:23 +08:00
@dreamage 00 表示一个字节值是 0. 找找你用的语言里 hex2bin 之类的函数处理
dreamage
2017-07-05 11:25:53 +08:00
@wsy2220 python 得不到想要的结果

import hashlib
import hmac

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]

#10->2
def dec2bin(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem])
return ''.join([str(x) for x in mid[::-1]])

#16->10
def hex2dec(string_num):
return str(int(string_num.upper(), 16))

#16->2
def hex2bin(string_num):
return dec2bin(hex2dec(string_num.upper()))

key = "123456"
msg = hex2bin('0015025c01000000001a1ecf006a0000')
print msg

m = hmac.new(key, msg, hashlib.sha1)
signature = m.hexdigest()
print signature
-------------------------------
101010000001001011100000000010000000000000000000000000000000000011010000111101100111100000000011010100000000000000000
29c6662533383f42db96fa6a7f82f265aa1b84e8
wsy2220
2017-07-05 12:17:40 +08:00
@dreamage python hex2bin 意思跟别的不一样,应该用下面这个:

import binascii
hexstr = '0015025c01000000001a1ecf006a0000'
binstr = binascii.unhexlify(hexstr)
dreamage
2017-07-05 12:22:18 +08:00
@wsy2220 行了 感谢
suduo1987
2017-07-25 16:47:17 +08:00
CryptoJS
chinawrj
2017-09-08 10:50:39 +08:00
@Kilerd 别介意,lz 可能不在乎签名还是校验究竟是什么区别。加密也是。
dreamage
2017-09-11 11:04:35 +08:00
@chinawrj 我的锅 概念不清

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX