-
-
一个散列算法(不可逆),不知道哪位大侠能有好的方法把它逆向转换
-
发表于:
2004-12-15 22:35
4736
-
一个散列算法(不可逆),不知道哪位大侠能有好的方法把它逆向转换
一个散列算法(不可逆),
把一字符串散列成一个DWORD型。
不知道哪位大侠能有好的方法把它逆向转换,
即有DWORD数,求它的字符串。
DWORD aaaa(CString& str)
{
DWORD arg_4;
int i=0;
char buf[MAX_PATH_4];
memset(buf,0,MAX_PATH_4);
int len = str.GetLength();
strcpy(buf, str);
len = (len+3)>>2;
*((DWORD*)(buf+len*4)) = 0x9BE74448;
len ++;
*((DWORD*)(buf+len*4)) = 0x66F42C48;
len ++;
_asm
{
mov [arg_4], 0F4FA8928h
mov esi, 37A8470Eh
mov edi, 7758B42Bh
xor ecx, ecx
loc_10003645:
mov ebx, 267B0B11h
rol [arg_4], 1
lea eax, buf
xor ebx, [arg_4]
mov eax, [eax+ecx*4]
mov edx, ebx
xor esi, eax
xor edi, eax
add edx, edi
or edx, 2040801h
and edx, 0BFEF7FDFh
mov eax, esi
mul edx
adc eax, edx
mov edx, ebx
adc eax, 0
add edx, esi
or edx, 804021h
and edx, 7DFEFBFFh
mov esi, eax
mov eax, edi
mul edx
add edx, edx
adc eax, edx
jnb short loc_10003694
add eax, 2
loc_10003694:
inc ecx
mov edi, eax
cmp ecx, [len]
jnz short loc_10003645
xor esi, edi
mov [arg_4], esi
}
return arg_4;
}
[培训]科锐逆向工程师培训第53期2025年7月8日开班!