首页
社区
课程
招聘
[求助]关于前段日子发的算法问题
发表于: 2012-11-14 17:30 5114

[求助]关于前段日子发的算法问题

2012-11-14 17:30
5114
原帖地址:http://bbs.pediy.com/showthread.php?p=1115922#post1115922
经过朋友提醒 最后收集了key 本机上是可以了,但是其他机器不行,硬着头皮又跟了3天..

经过这几天的努力 发现貌似是rc4算法 但是我用标准rc4算法算不出结果

待加密原文
00 01 50 A3 5A 97 00 58 8B 17 67 B1 50 07 23 25
D7 07 3B 5C EB 1D 33 BC 0B CB 1E 39 90 8D DA 5F
90 7F 00 61 34 5B E5 43 4D 02 8D 3E F8 1A 8D 19
23 32 CD AE 5E F9 FA 62 A5 96 75 45 B8 60 2B 17
44 AA B5 98 3D 2A F6 40 0B 10 DB C4 E4 0D E5 6E
59 CF F1 53 EA E9 E4 03 81 F0 70 23 00 95 FF 93

第一次加密后
byData[0x60] =
00 00 52 A0 5E 92 06 5F 83 1E 6D BA 5C 0A 2D 2A
C7 16 29 4F FF 08 25 AB 13 D2 04 22 8C 90 C4 40
B0 5E 22 42 10 7E C3 64 65 2B A7 15 D4 37 A3 36
13 03 FF 9D 6A CC CC 55 9D AF 4F 7E 84 5D 15 28
04 EB F7 DB 79 6F B0 07 43 59 91 8F A8 40 AB 21
09 9E A3 00 BE BC B2 54 D9 A9 2A 78 5C C8 A1 CC

实际上是
for ( int i = 0; i < 0x60; i ++ )
{
        byData[i] ^= i;
}

第二次加密
运用到的key
DC B9 A5 72 99 C5 8D 24
又用到一个256字节的缓冲区
让我想到了是rc4算法

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
密码盒子初始化后
XBOX[256]
6A B2 A6 12 EA 4B FA AC 79 5D 84 2A 91 7C 01 D3
24 B6 07 34 55 0F 9C F9 4A 5E E4 1A 22 20 83 21
6B 2E 65 37 62 B0 F7 29 9F BC CF 92 3B 88 98 80
E1 3A 7B EC F6 0D E8 53 A2 1D 26 9D AA E7 B7 47
B1 3F 0E 67 00 18 90 B8 5F 70 CC 86 28 75 14 33
1C 4D CE BD AE A7 BB 87 82 06 0A 6D B4 81 52 A8
49 31 7A A0 78 1B 1E BE 99 2F 11 ED CA 89 3D CB
25 1F 85 8E 6C 56 8F 8C 3C EE 96 DF 48 E9 C0 A9
66 C6 8A A4 5A D7 27 44 39 E6 09 DB 0B FD B3 D0
15 42 C9 08 F4 64 C3 30 94 60 19 05 AF 57 DE 41
EB 4C F0 E5 A1 0C E0 D5 B5 35 16 BF 7D 63 D8 BA
F3 CD C7 9A FC 23 B9 61 58 68 32 6F C8 D6 E2 F8
AD 02 D2 72 40 DA C5 69 DC E3 95 54 FF 5B 46 97
03 50 45 4F C1 EF 8B AB 2D FE F1 59 FB 13 C4 6E
2B C2 93 5C 3E A5 F5 7E 38 43 76 71 9E D9 2C D1
74 D4 F2 A3 DD 77 4E 36 9B 73 51 10 04 7F 17 8D

第二次加密后
待加密的数据变成

27 D1 93 37 F0 42 56 FB 74 6C 79 AE 43 52 66 25
C6 03 AE 95 87 9E 38 F4 4B 54 E9 6E 96 62 FD 5C
16 C7 E1 93 7F AA 99 95 B4 70 03 CC EC 37 15 23
4B 8B AF A3 3A 98 B2 3B E3 25 D3 E3 B9 51 19 B5
F1 77 6B 47 B2 D3 6A 13 9D 92 53 0D A3 12 7A 6F
33 90 5F F7 B0 2B CA 01 97 9D 75 F6 43 B9 B6 1C

经过分析得出是 算法是

for ( int i = 0; i < 0x60; i ++ )
{
        int iKeyPos = key[i % 8];
        outdata[i] = byData[i] ^ iKeyPos ^ XBox[iKeyPos];
}
这个XBOX 要怎么初始化? 跟了下rc4的初始化 结果和我这里分析的不一样

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
2
如果每一次XBOX的值都是一样的话那就照抄就行了.
PS: 我在另一贴也回了你, 考虑一下DES算法.
2012-11-15 16:59
0
雪    币: 248
活跃值: (129)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
好的 我试试看
2012-11-16 11:32
0
雪    币: 248
活跃值: (129)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
- -|| 也不是des算法.
2012-11-16 12:06
0
雪    币: 248
活跃值: (129)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
如果每一次XBOX的值都是一样的话那就照抄就行了.
每台机的XBOX都是不一样的.
2012-11-16 12:07
0
游客
登录 | 注册 方可回帖
返回
//