简单来说,该主题指出,计算大小可变的文件的 sha256 哈希值的内存有效方法是什么?我也愿意妥协使用更多内存来加快计算速度。
我使用了 Christophe Devine 的一个简单的独立实现——虽然他的网站似乎不在网络上,但 Google 代码搜索找到了它 在这个地方.
利用这些
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 测试向量,因此您也会得到那种温暖而模糊的感觉/;-)
或者使用 OpenSSL libcrypto:
您可以尝试Con Kolivas 的实现用于比特币的多线程多池 FPGA 和 ASIC 矿工或配置良好的Brian Gladman 博士的代码。