2011-01-06 88 views
2

我被反向工程通过一个老游戏中使用的存档文件格式,并且发现它使用下面的函数(用手反编译)散列文件名:什么是散列函数?

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; 
} 

我想知道,如果这是什么标准,或者如果它只是开发人员随机挑选的东西。

+0

你能告诉我们这是什么游戏吗?相当现代的随机数生成函数基于相同的想法 – 2011-01-06 08:45:09

回答

2

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