#include <mhash.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
 {
        int i;
        MHASH td;
        unsigned char buffer;
        unsigned char *hash;
        td = mhash_init(MHASH_WHIRLPOOL);
        if (td == MHASH_FAILED) exit(1);
        while (fread(&buffer, 1, 1, stdin) == 1) {
             mhash(td, &buffer, 1);
        }
        hash = mhash_end(td);
        for (i = 0; i < mhash_get_block_size(MHASH_WHIRLPOOL); i++) {
            printf("%.2x", hash[i]);
        }
        printf("\n");
        exit(0);
 }
嗨,我有来自 mhash 示例页面的上述代码。我需要更改它,所以它将继续从 读取stdin,并逐行计算哈希,而不是等待EOF
cat textfile | whirlpool_line_hash
我的理解是,我保留 while 循环(等待EOF)并在收到 10(0x0a)后进行哈希计算和打印。打印 mhash 后需要重新设置,对吗?我根本不喜欢C,但我需要一个快速的程序,所以我想用C来做。我已经无法将指针与整数进行比较;-)有人可以帮忙吗?