大家好,我是 C 编程的新手。在将数据发送到我的应用程序之前,我正在尝试对我的数据实现 SHA1HMAC。
这是生成哈希的代码
Serial.println("Result:");
Sha1.initHmac(hmacKey,20);
Sha1.print("Test");
printHash(Sha1.resultHmac());
Serial.println();
这是打印散列的方法。我不明白这里正在做什么。我想将散列存储在一个变量中,这样我就可以将散列的字符串输出与字符串中的另一个散列进行比较
void printHash(uint8_t* hash) {
int i;
for (i=0; i<20; i++) {
Serial.print("0123456789abcdef"[hash[i]>>4]);
Serial.print("0123456789abcdef"[hash[i]&0xf]);
}
Serial.println();
}
它通过取商 (>>4
) 和余数 (&0xF
) 并将它们用作十六进制数组中的索引,简单地将数字转换为其十六进制表示字符(“0123456789abcdef”
)。它对 hash
数组中的 20 个数字执行此操作。
我是一名优秀的程序员,十分优秀!