【问题标题】:Arduino & Python MD5Arduino 和 Python MD5
【发布时间】:2013-10-24 14:19:06
【问题描述】:

我尝试在 Python 中散列一个字符串或至少一组数字,并将其与使用 Scott MacVicar 在 Arduino 上更新的 MD5 库生成的比较,但我得到的结果不同。

Arduino 代码:

#include <MD5.h> 

void setup()
{
   //initialize serial
   Serial.begin(9600);
   //give it a second
   delay(1000);
   //generate the MD5 hash for our string
   unsigned char* hash=MD5::make_hash("hello");
   //generate the digest (hex encoding) of our hash
   char *md5str = MD5::make_digest(hash, 16);
   //print it on our serial monitor
   Serial.println(md5str);
}

结果:5d41402abc4b2a76b9e4080020008c00

Python 代码:

from hashlib import md5

m = md5('hello').hexdigest()
print m    

结果:5d41402abc4b2a76b9719d911017c592

从我在每次尝试中看到的结果是,不同之处在于最后 14 个字符。但是生成的哈希长度是一样的!

我做错了什么??谢谢

编辑:

我从终端使用了一个命令并得到:

echo -n 'hello' | openssl md5

结果:5d41402abc4b2a76b9719d911017c592

这让我觉得问题的根源在于 arduino 代码

【问题讨论】:

  • 您的意思是echo 'hello'?不过我同意,这是错误的 Arduino。
  • 抱歉编辑了大声笑是的,但我想知道代码有什么问题
  • 您是否解决过这个问题或向开发人员报告过这个错误?
  • 不,我放弃了这个想法。我对其他库也有其他问题,但可以讨论解决方案

标签: python arduino md5


【解决方案1】:

我假设您从这里使用 MD5 库:https://github.com/tzikis/ArduinoMD5/

看起来那个库有一个错误。 MD5::make_hash() 函数返回一个指向栈上内存的指针。必须在调用 make_digest() 之前更改部分内存,因此生成的摘要部分错误。

【讨论】:

  • 是的,我认为库中存在错误。会不会是最后加了一个“0”??我在论坛中多次看到这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2011-08-12
相关资源
最近更新 更多