c - C中的SHA256实现

标签 c sha256

我正在尝试从该网站编写 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/

相关文章:

c - 如何在控制台应用程序中设置WM_KEYDOWN消息拦截器?

C/实时用不同类型的数据初始化内存

c - window OS下c中的包嗅探

javascript - SHA-256 密码生成器

clickonce - SignTool 未使用 SHA256 签署 ClickOnce 应用程序,仅使用 SHA1

c - Xcode - double 比较

C - 使用具有大尺寸参数的 malloc 时出现段错误

c# - 密码哈希 - 为什么加盐 60,000 次

ios - 加解密iOS/Node.js安全问询

cryptography - 如何在erlang中获取sha256散列字符串?