【发布时间】:2013-05-18 01:57:56
【问题描述】:
如何使用散列函数
void sha2( const unsigned char *input, int ilen,
unsigned char output[32] )
{
sha2_context ctx;
sha2_starts( &ctx );
sha2_update( &ctx, input, ilen );
sha2_finish( &ctx, output );
memset( &ctx, 0, sizeof( sha2_context ) );
}
我试过了
sha2(InpData, sizeof(InpData), OutData)
但结果我得到了垃圾数据。
【问题讨论】:
-
memset的意义何在? -
@CarlNorum
memset的唯一要点是不要将 SHA-2 上下文留在堆栈上,以便对原始字符串进行逆向工程。哈希对反转具有弹性,上下文状态可能不是。当然在这种情况下,原始字符串也没有被覆盖的整个问题...... :)