请教,这是什么加密算法??
我从本机发送的封包截获的数据分析,加密方法似乎是在每个BYTE上加一个数,
这个数会随该字节的位置而变化,变化的效果呈周期出现,每个周期8字节,
例如:
我输入的内容是32个‘d’,得到的结果是(十六进制):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010 93 96 91 AC AF A2 AD A8 AB
0020 AE A9 C4 C7 BA C5 C0 C3 C6 C1 DC DF D2 DD D8 DB
0030 DE D9 F4 F7 EA F5 F0
其中第一个表示‘d’的为0x93,出现位置为0x17,我发现,
0x93(147)和‘d(ASCII码100)’的关系为‘d(100)’+47 = 0x93(147),
随147后的31个‘d’的表现(每个字节与其前面字节的变化)是依次:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010 0 +3 -5 +27 +3 -13 +11 -5 +3
0020 +3 -5 +27 +3 -13 +11 -5 +3 +3 -5 +27 +3 -13 +11 -5 +3
0030 +3 -5 +27 +3 -13 +11
所得结果也就是(上面十六进制变成十进制):
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010 147 150 145 172 175 162 173 168 171
0020 174 169 196 199 186 197 192 195 198 193 220 223 210 221 216 219
0030 222 217 244 247 234 245 240
我随后输入了32个‘~’(就是键盘上位于ESC下面那个符号),因为它的ASCII码是126,
容易溢出,得到了:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010 AD B0 BB C6 B9 BC C7 C2 C5
0020 C8 D3 DE D1 D4 DF DA DD E0 EB F6 E9 EC F7 F2 F5
0030 F8 03 0E 01 04 0F 0A
不难发现,一直到0x30还都对,0xF8 = 248, 248 - (222 - 100) = 126,
结果就是‘~’的ASCII码,但是随后的0x31就变成了0x03,我就不知道是怎么回事了。
请高手帮我看看这个加密算法具体是怎么实现的?
像32个“~”测试的时候,那种溢出的,应该如何还原成原来的值?
比如上面那个0x31位置的值“0x03”应该如何还原成“0x7E”?
就是说,能否用这个样本得到这次的加密映射关系(是“异或”还是什么别的运算,和什么值去运算)?
还有,如何根据我上面的样本得到这次的钥匙是什么?
如果我下次想通过监听所有与服务器往来的包,来判断钥匙是在什么位置收得到的,
就要知道那次的钥匙是什么,然后在所有客户端接收到的包里面查找这个信息来判断,对吧。
那样我也需要知道如何判断钥匙是什么呀。
有没有什么方法(或者软件),可以让我输入这个加密方式,迅速在密文和明文之间来回转换?
上面的分析都是在纸上用圆珠笔记录Windows计算器得来的啊,就这点东西就用了一个下午。
谢谢了,我对加密几乎没有了解,见笑了。