首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BLAKE2输入参数

BLAKE2输入参数
EN

Stack Overflow用户
提问于 2015-03-01 11:55:51
回答 1查看 576关注 0票数 0

作为一名新手,我正在读关于最近一批散列函数的报纸,BLAKE2引起了我的兴趣。然后我想玩一下代码包中的"blake2s“代码。

如果我要实现一个简单的string,我可以理解有一个键和salt的内置变量。

但我不知道如何提供一个字符串或文件作为输入,并收集哈希作为输入。哪个变量负责消息和摘要?

也许我做错了,但下面的内容没有打印任何输出。

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-01 13:00:50

您的程序有两个与打印散列直接相关的问题:

  1. 成功是通过返回0表示的。因此,您的if需要被以下内容所取代 if(a==0) printf("%s",hashStr);
  2. 哈希是原始二进制文件,甚至可以包含\0字节。在打印之前,您应该应用十六进制或Base64编码。

还有一些其他的缺陷和文体问题:

  1. 您可能希望用strlen(str)替换传递给hasher的1024,因此它只对实际字符串进行散列。
  2. 如果用户输入的字节超过1024字节,您的程序就会出现缓冲区溢出。在测试程序中没有什么大问题,但是应该在适当的实现中修复一些东西,因为它是一个安全漏洞。
  3. sizeof(char) == 1的定义
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28813502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档