作为一名新手,我正在读关于最近一批散列函数的报纸,BLAKE2引起了我的兴趣。然后我想玩一下代码包中的"blake2s“代码。
如果我要实现一个简单的string,我可以理解有一个键和salt的内置变量。
但我不知道如何提供一个字符串或文件作为输入,并收集哈希作为输入。哪个变量负责消息和摘要?
也许我做错了,但下面的内容没有打印任何输出。
#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;
}发布于 2015-03-01 13:00:50
您的程序有两个与打印散列直接相关的问题:
0表示的。因此,您的if需要被以下内容所取代
if(a==0) printf("%s",hashStr);\0字节。在打印之前,您应该应用十六进制或Base64编码。还有一些其他的缺陷和文体问题:
strlen(str)替换传递给hasher的1024,因此它只对实际字符串进行散列。sizeof(char) == 1的定义https://stackoverflow.com/questions/28813502
复制相似问题