如何在Python中HMAC一个函数?

问题描述 投票:1回答:2

可以使用以下代码将HMAC应用于字符串

import hmac
import hashlib
digest_maker=hmac.new(b'secret key',b'apple',hashlib.sha1)
digest=digest_maker.hexdigest()
print(digest)

但是我想为这样的事情实现HMAC

f=dev.recv()

这里dev.recv()将不断接收将存储在f中的CAN消息。存储在f中的值必须是HMACed

我已经为相同的场景实现了Hash。我想为同一场景实施HMAC

from canard import can
from canard.hw import socketcan
import hashlib
dev=socketcan.SocketCanDev("slcan0")
dev.start()
while True:
  f=dev.recv()
  hash_object = hashlib.sha256(str(f).encode('utf-8'))
  print('Hash', hash_object.hexdigest())

我附加了Hash enter image description here的输出

cryptography hmac can-bus
2个回答
0
投票

str(f).encode('utf-8')替换你的苹果。

使用真正的随机密钥而不是密码,最好是与SHA-1不同的东西(它对于HMAC来说仍然是安全的,但攻击只会变得更好)。


0
投票

你可以使用hmac对象作为持续更新的东西:

h=hmac.new(b'secret key',None, hashlib.sha256)
while True:
    f=dev.recv()
    h.update(f)

并且结束(在获得所有数据之后),您可以使用h.digest()(raw)或h.hexdigest()(hexified string)查看结果,并将预期结果与实际结果进行比较,例如:您也可以在每个块中调用它,就像您在示例中所做的那样。

您在示例中使用的哈希对象会刷新每个接收到的块,并且没有秘密信息(因此很容易被欺骗)。

© www.soinside.com 2019 - 2024. All rights reserved.