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;
}
을, 또는 개발자가 무작위로 뽑은 것입니다.
게임이 몇 년인지 알려주실 수 있습니까? 꽤 현대의 난수 생성 함수는 동일한 아이디어 인 –
을 기반으로합니다. Shift-Add-XOR 해시와 비슷하지만 XOR 대신 추가가 추가됩니다. 일부 기존 해시 알고리즘에 대한 http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx#existing을 참조하십시오. – Christoph
나에게 오래된 엄지 손가락으로 묶인 문자열 해시 함수처럼 보입니다. 'a << 5^a >> 27'은 꽤 흔하게 볼 수 있습니다. – leppie