以下是一些预处理哈希表的代码:
unsigned long cryptTable[0x500];
void StringHash::InitCryptTable()
{
unsigned long seed = 0x00100001, index1 = 0, index2 = 0, i;
for( index1 = 0; index1 < 0x100; index1++ )
{
for( index2 = index1, i = 0; i < 5; i++, index2 += 0x100 )
{
unsigned long temp1, temp2;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp1 = (seed & 0xFFFF) << 0x10;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp2 = (seed & 0xFFFF);
cryptTable[index2] = ( temp1 | temp2 );
}
}
}
有没有人可以告诉我为什么种子= 0x00100001和以下算法,为什么不做memset(cryptTable,0,sizeof(cryptTable)),这样做的好处是什么?
答案 0 :(得分:1)
这部分代码有多个方面。首先,您应该阅读密码学和随机生成器。
根据第二部分 - 它取决于它的使用位置......