首页
社区
课程
招聘
小虾版主和各位帮忙再看一下,下面代码可否逆运算
发表于: 2006-5-17 10:31 5039

小虾版主和各位帮忙再看一下,下面代码可否逆运算

2006-5-17 10:31
5039
00402F5C  /$  55            PUSH EBP
00402F5D  |.  8BEC          MOV EBP,ESP
00402F5F  |.  53            PUSH EBX
00402F60  |.  56            PUSH ESI
00402F61  |.  66:BA ACD3    MOV DX,0D3AC
00402F65  |.  33F6          XOR ESI,ESI
00402F67  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
00402F6A  |.  EB 24         JMP SHORT LHB.00402F90
00402F6C  |>  0FB7DA        /MOVZX EBX,DX
00402F6F  |.  0FB7D2        |MOVZX EDX,DX
00402F72  |.  C1FB 08       |SAR EBX,8                              
00402F75  |.  8A08          |MOV CL,BYTE PTR DS:[EAX]
00402F77  |.  32D9          |XOR BL,CL
00402F79  |.  81E1 FF000000 |AND ECX,0FF
00402F7F  |.  03CA          |ADD ECX,EDX
00402F81  |.  8818          |MOV BYTE PTR DS:[EAX],BL
00402F83  |.  69D1 6DCE0000 |IMUL EDX,ECX,0CE6D                     
00402F89  |.  66:81C2 BF58  |ADD DX,58BF
00402F8E  |.  46            |INC ESI
00402F8F  |.  40            |INC EAX
00402F90  |>  0FB7CE         MOVZX ECX,SI
00402F93  |.  3B4D 0C       |CMP ECX,DWORD PTR SS:[EBP+C]
00402F96  |.^ 7C D4         \JL SHORT LHB.00402F6C
00402F98  |.  5E            POP ESI
00402F99  |.  5B            POP EBX
00402F9A  |.  5D            POP EBP
00402F9B  \.  C3            RETN

小虾

『Win32/Win64编程』版主给出的高级语言
--------------------------------------------------------------------------------
//就是加密一串字符串之类的函数。
void func(char* lpszChar,int len)
{
    int var1;
    WORD var2=0xd3ac;
    for (int i=0; i<=len; i++)
    {
        var1 = (var2 >> 8) ^ lpszChar[i];
        var2 =  (lpszChar[i] + var2) * 0xce6d + 0x58bf;
        lpszChar[i] = (char)var1;
    }
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
这是一个对称算法,加密解密都是用同一函数的。你只需将加密后的数据再用这个函数运算一下就是解密了。
2006-5-17 12:40
0
雪    币: 370
活跃值: (78)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
3
最初由 小虾 发布
这是一个对称算法,加密解密都是用同一函数的。你只需将加密后的数据再用这个函数运算一下就是解密了。

呵呵,有一点地方要修改

加密部分:
void Encipher(char* lpszChar,int len)
{
    WORD var1;
    WORD var2=0xd3ac;
    for (int i=0; i<len; i++)
    {
        var1 = (var2 >> 8) ^ lpszChar[i];
        var2 =  (lpszChar[i] + var2) * 0xce6d + 0x58bf;
        lpszChar[i] = (char)var1;
    }
}

解密部分:
void Decipher(char* lpszChar,int len)
{
    WORD var1;
    WORD var2=0xd3ac;
    for (int i=0; i<len; i++)
    {
        var1 = (var2 >> 8) ^ lpszChar[i];
        lpszChar[i] = (char)var1;       //这的顺序要变一下
        var2 =  (lpszChar[i] + var2) * 0xce6d + 0x58bf;
    }
}
2006-5-17 13:01
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
最初由 Ryosuke 发布
呵呵,有一点地方要修改

加密部分:
void Encipher(char* lpszChar,int len)
{
........

2006-5-17 13:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
两位高手谢谢你们了,郁闷了好几天的问题
高手一出手便知有没有
我啥时候能学会这一手哦
2006-5-17 18:47
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
最初由 一文 发布
小虾版主和各位帮忙再看一下,下面代码可否逆运算


下次不要点将了,直接将你的问题列出。
点将有许多弊端。
2006-5-17 19:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵
都惊动坛主了啊
不好意思俺不知道
下次俺会注意的
谢谢坛主
2006-5-17 22:07
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个加密算法有没有个通用的名称?
2020-1-14 08:48
0
游客
登录 | 注册 方可回帖
返回
//