首页
社区
课程
招聘
一个散列算法(不可逆),不知道哪位大侠能有好的方法把它逆向转换
发表于: 2004-12-15 22:35 4736

一个散列算法(不可逆),不知道哪位大侠能有好的方法把它逆向转换

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日开班!

收藏
免费 1
支持
分享
最新回复 (5)
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
天方夜谈
2004-12-16 10:42
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
不懂!!!!!
2004-12-16 10:51
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
4
单向函数是不可逆的,但有可能向MD5一样,找到碰撞
a=f(x)
即知道a推不出x, 但有可能找到一个y
使f(x)=f(y)=a, x<>y,不过是不可能的,或异常困难的
2004-12-16 12:55
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
5
等式 : 可逆
eg:  a ? 3 = 5
       a = 8

单向加密 : 不可逆
eg:  a mod 5 = 3
       a = ?
   a 可能是 8, 13, 18, 23……

或是 bit shift
    a >> 5 = 1010b
       a = ?
2004-12-16 13:09
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也知道它是不可逆的,但有没有一个好的穷举方法?
类似与穷举MD5那样(MD5有一些网站可以帮你逆转换)
2004-12-16 13:50
0
游客
登录 | 注册 方可回帖
返回