0
作为一个新手,我正在阅读最近的杂凑函数和BLAKE2吸引我的论文。然后我想在代码包中使用“blake2s”代码。BLAKE2输入参数
如果我要实现一个简单的字符串散列函数,我可以理解,有一个键和盐的内置变量。
但我无法弄清楚如何提供一个字符串或文件作为输入并收集哈希作为输入。哪些变量负责消息和摘要?
也许我做错了,但以下不打印任何输出。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "blake2s.h"
#include "blake2s.c"
#define SIZE 1024
int main(){
unsigned char *str, *hash;
str = malloc(SIZE * sizeof *str);
hash = malloc(32 * sizeof *str);
printf("> ");
scanf("%s", str);
int a = blake2s(hash, str, NULL, 32, 1024, 0);
if(a)
printf("%s", hash);
return 0;
}
哎呀。如果我现在要用盐,那么我需要从/ dev /(u)中随机输入salt吗? – sprkv5 2015-03-01 13:01:03
我没有在使用salt特性时看到很多观点,AFAIK参考实现并未公开它。第三个参数是关键,你想用什么作为关键取决于你在做什么。这与HMAC或HKDF的关键几乎相同。 – CodesInChaos 2015-03-01 13:03:10
请注意'scanf(“%s”,str)'只能读取第一个空格(空白,制表符,换行符)。打印你阅读的数据通常是一个好主意,这样你就知道程序得到了你想象的结果。如果你在程序中键入单词,只有第一个单词将被散列。或者,更糟糕的是,如果'blake2s()'的1024参数表示“有1024个字节的数据要散列”,那么您将不确定的数据传递给函数,因为'malloc()'不必将分配的内存设置为任何具体的价值。 – 2015-03-02 18:03:41