什么是哈希函数?

时间:2011-01-06 08:31:34

标签: c reverse-engineering

我正在对旧游戏使用的存档文件格式进行逆向工程,并发现它使用以下函数散列文件名(手工反编译):

int hash(char* filename) {
  unsigned int a = 0;
  int b = 0;
  for(int i = strlen(filename)-1; i>=0; i--)
   char c = toupper(filename[i]);
   a=(a<<5)+(a>>25);
   b+=c;
   a+=b+c;
  }
  return a;
}

我想知道这是不是标准的,或者它只是开发人员随机选择的东西。

1 个答案:

答案 0 :(得分:2)

它不代表任何标准哈希函数,只是简单的'手工制作'。