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