[英]Arduino & Python MD5
好吧,我尝试在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代码
我将假设你从这里使用MD5库: https : //github.com/tzikis/ArduinoMD5/
看起来这个库有一个bug。 MD5::make_hash()
函数返回指向堆栈内存的指针。 在调用make_digest()
之前,必须更改某些内存,以便生成的摘要部分错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.