我正在尝试从该网站编写 SHA256 实现程序:http://bradconte.com/sha256_c 在 MSP430 MCU 板上。我正在使用开源 Energia IDE 进行编程。
这是测试代码:
unsigned char hash[32];
SHA256_CTX ctx;
sha256_init(&ctx);
sha256_update(&ctx,(unsigned char*)"abc",3);
sha256_final(&ctx,hash);
PrintHex(hash);
转换为十六进制
void PrintHex(unsigned char * data)
{
char tmp[16];
for (int i=0; i<32; i++) {
sprintf(tmp, "%02x",data[i]);
Serial.print(tmp);
}
}
问题是输出总是错误的哈希码。
这是输出:
2bb53935edbba17dc04a04854518754d8a66484491b585b0d0700cd2512f5420
是测试代码还是我在这里做错了什么?
最佳答案
我在我的系统(Mac OS X,x86 64 位)上运行了这段代码,它给了我这个:
551ce4769446b343295ea7f819ba1c5557545e29a4de545746b2b246a9831f22
我认为我们可以安全地假设代码是垃圾:我使用一些在线工具验证了 ba7816b... 是正确的哈希,现在我们看到您的平台和我的平台都产生了不同的结果。我注意到代码中有一些关于字节序的注释,所以我查了一下,你的系统也是小字节序的,所以这应该不是问题。我建议您寻找不同的实现方式。
关于c - C中的SHA256实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22880627/