简单地说就是主题所述,计算大小可变文件的 sha256 哈希的内存有效方法是什么?我也愿意妥协使用更多内存来加快计算速度。
最佳答案
我使用了 Christophe Devine 的一个简单的独立实现——虽然他的网站似乎不在网上,但谷歌代码搜索找到了它 in this place .
使用这些sha256.c
和sha256.h
,他的main()
函数的核心就是简单的
if( ! ( f = fopen( argv[1], "rb" ) ) )
{
perror( "fopen" );
return( 1 );
}
sha256_starts( &ctx );
while( ( i = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
{
sha256_update( &ctx, buf, i );
}
sha256_finish( &ctx, sha256sum );
for( j = 0; j < 32; j++ )
{
printf( "%02x", sha256sum[j] );
}
printf( " %s\n", argv[1] );
}
main()
函数的其余部分验证了 FIPS-180-2 测试 vector ,所以您也会有那种温暖和模糊的感觉/;-)
关于c - 如何使用 ANSI C 获取文件的 sha256 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964567/