Cryptography 如何在Python中创建函数?

Cryptography 如何在Python中创建函数?,cryptography,hmac,can-bus,Cryptography,Hmac,Can Bus,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()将持续接收CAN消息,该消息将存储在f中。必须对存储在f中的值进行HMACE 我已经为相同的场景实现了Hash

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()将持续接收CAN消息,该消息将存储在f中。必须对存储在f中的值进行HMACE

我已经为相同的场景实现了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的输出

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


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

您可以将HMAC对象用作持续更新的对象:

h=hmac.new(b'secret key',None, hashlib.sha256)
while True:
    f=dev.recv()
    h.update(f)
最后(在您拥有所有数据后),您可以使用
h.digest()
(原始)或
h.hexdigest()
(hexified字符串)查看结果,并将预期结果与实际结果进行比较,例如,您也可以在每个块调用它,就像在示例中一样


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

发布此消息可能比阅读文档并简单地尝试自己弄明白要花更多的时间。如何防止它被欺骗?@annonymous只有知道密钥,才能计算出正确的HMAC摘要。@annonymous例如,请参阅