我正在使用 TinyOS-2.1.2,为了实现安全技术,我正在使用 TinyECC-2.0。我想使用 tinyecc 中可用的 SHA1。但是,当我取一个值的哈希值时,
uint8_t 数据=123;
我使用 SHA1.nc 中给出的 sha 的三个函数,即 SHA1.reset、SHA1.update 和 SHA1.digest 来获取结果。但每次我运行代码,即。做“make micaz sim”我得到相同数据的不同哈希结果。
如何为每个获取的数据获取唯一的哈希值?
代码是:
#include "sha1.h"
module DisseminationC {
uses {
interface SHA1;
}
implementation{
void hash(){
uint8_t x=123;
call SHA1.context(context);
call SHA1.update(context, x, sizeof(x));
call SHA1.digest(context, Message_Digest[SHA1HashSize]);
dbg("All", "%s Hash is : %d \n", sim_time_string(), Message_Digest);
}
我对代码进行了修改,如下所示。现在,我得到一个哈希输出。但问题是,对于作为输入给出的每个不同数字,我都会得到相同的答案。我该如何解决这个问题?
请帮我..
#include "sha1.h"
module SecurityC{
uses interface Boot;
uses interface SHA1;
}
implementation{
uint8_t Message_Digest[SHA1HashSize];
SHA1Context context;
uint8_t num=123;
uint32_t length=3;
uint8_t i;
event void Boot.booted()
{
dbg("Boot", "Application booted.\n");
call SHA1.reset(&context);
while(length>0)
{
length=length/10;
call SHA1.update(&context, &num, length);
}
call SHA1.digest(&context, Message_Digest);
for(i = 0; i < SHA1HashSize; i++) {
dbg("Boot", "%s KEY IS: %x \n", sim_time_string(), Message_Digest[i]);
}
}
}