如何散列CAN消息?

2024-09-23 22:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把从车上收到的CAN信息散列。以下用Python编写的代码用于从车辆接收CAN消息(dev.recv()),并打印接收到的消息(dev.send())。我想在使用dev.send()发送消息之前,对dev.recv()函数中存在的CAN消息进行哈希处理。这可能吗?如果是这样,怎么办?你知道吗

from canard.hw import socketcan

dev = socketcan.SocketCanDev(’can0’)
dev.start()
while True:
    f = dev.recv()
    dev.send(f)

`


Tags: 函数代码fromdevimportsend信息消息
2条回答

如果您对加密哈希感兴趣,您应该看看hashlib

有了它,你应该能够散列消息和发送散列如下

H = hashlib.new('sha256', message)
dev.send(H.digest())

如果您想在散列之外仍然发送原始消息,可以对send进行两次调用。你知道吗

  • 我不确定"f"的数据类型,即从函数recv接收的数据。你知道吗
  • 我猜SocketCanDev只是设备的包装,而recv的行为与函数read()非常相似。你知道吗
  • 因此,代码中的"f"可能被解释为字节数组或字符数组。你知道吗

Hashing is done to an array of bytes, regardless of the format of the string.

而且,散列的结果不依赖于输入格式或数据类型。 因此,就你而言

while True:
    f = dev.recv()
    result = (hashFunction)(f)
    dev.send(result) // result should in the data type that the function send can accept as a parameter 

(hashFunction)可以替换为哈希库中的实际函数,例如“hashlib”。你知道吗

相关问题 更多 >