首页
社区
课程
招聘
此算法如何求逆?
发表于: 2004-5-17 19:50 5199

此算法如何求逆?

2004-5-17 19:50
5199
有7个英文字符,
保存为P1,P2,P3...P7。
还有一数X(BYTE类型)
将P1-P7如此处理

R1=((P1+P2+P3)*X) Mod 0xFF;
R2=((P2+P3+P4)*X) Mod 0xFF;
R3=((P3+P4+P5)*X) Mod 0xFF;
R4=((P4+P5+P6)*X) Mod 0xFF;
R5=((P5+P6+P7)*X) Mod 0xFF;
R6=((P1+P5+P6)*X) Mod 0xFF;
R7=((P1+P2+P6)*X) Mod 0xFF;

现知道R1-R7,X
如何求得P1,P2...P7呢?

最初由 WQXNET-QIQI 发布
用户输入一个字串,长度为5-7个英文字符,
保存为P1,P2,P3。。。P7(若P6,P7没有则为0x00)
首先生成2随机数X1,X2,异或后得到X3
将P1-P7如此处理

P1+P2+P3=R1
P2+P3+P4+R2
P3+P4+P5=R3
P4+P5+P6=R4
P5+P6+P7=R5
P1+P5+P6=R6
P1+P2+P6=R7

之后将R1-R7分别和X3相乘,得到得数若大于0xff则减去0xff
现在知道乘后的R1-R7,X1,X2
如何知道P1-P7呢,跪求方法!


我觉得这还是很好玩的题,不要让它沉下去嘛?!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 6
支持
分享
最新回复 (5)
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
2
我想是不是可以这样:

先用Rn=Rn DIV X,如不能整除则 Rn=Rn+0xFF,直到能整除后再除;再将得到的Rn再用方程组求解:
/P1+P2+P3=R1
|P2+P3+P4+R2
|P3+P4+P5=R3
|P4+P5+P6=R4
|P5+P6+P7=R5
|P1+P5+P6=R6
\P1+P2+P6=R7
2004-5-18 12:37
0
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
r1....R7的类型呢,要考虑是否会有数据溢出的情况,如无,可以用遍历的方法,数据量不算大的,26^7方,还是很快就完成的。
2004-5-19 07:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没看清题目,sigh...
原来不是规则的,我得方法不管用了-__|||
2004-5-19 08:12
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 nig 发布
r1....R7的类型呢,要考虑是否会有数据溢出的情况,如无,可以用遍历的方法,数据量不算大的,26^7方,还是很快就完成的。


最好不要用穷举的办法,这是个字符串加密的问题.
R1~R7也是BYTE型的,一出溢出情况不用考虑,因为(Mod 0xff),加密算法好象都是这样的
(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)(Mod 0xff)
2004-5-19 17:53
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
请个路高手出马帮小弟啊(@_@)
请个路高手出马帮小弟啊(@_@)
请个路高手出马帮小弟啊(@_@)
请个路高手出马帮小弟啊(@_@)
2004-5-19 17:57
0
游客
登录 | 注册 方可回帖
返回
//