【发布时间】:2017-06-28 14:32:58
【问题描述】:
我在网上找到了 SHA256 的实现。它由单个文件sha256.c 组成,我已经在Linux 上成功测试了该功能。
这是文件的链接:http://bradconte.com/sha256_c
当我尝试在 Contiki 中使用它时,输出不正确。
这是一段代码:
unsigned char text1[]={"sallam"}, hash[32];
int idx;
SHA256_CTX ctx;
sha256_init(&ctx);
sha256_update(&ctx, text1, strlen(text1));
sha256_final(&ctx, hash);
print_hash(hash);
这是我用来打印哈希的函数:
void print_hash(unsigned char hash[])
{
int idx;
for (idx=0; idx < 32; idx++)
printf("%02x",hash[idx]);
printf("\n");
}
我已经尝试将输出格式更改为%x,但没有帮助。
我认为这与小端与大端(字节序)问题有关。
【问题讨论】:
-
那么您的平台(contiki?)使用哪种字节序?
-
还有Linux运行在哪个平台上,你用来测试的?
-
我在虚拟机上使用 Instant Contiki 2.7。 ubuntu endianness 是 little endian,因为 contiki 我不知道如何检查它,请原谅我。
-
因为知道字节序来解决你的问题是必不可少的,你最好去看看:stackoverflow.com/q/2100331/694576
-
我认为这与字节序无关。您应该删除
big-endian标签,Contiki 不支持 any 大端平台(不像 Linux)。