首页
社区
课程
招聘
[求助]请教高手一个算法的求逆,正算过程已知。
发表于: 2005-2-19 11:08 5232

[求助]请教高手一个算法的求逆,正算过程已知。

2005-2-19 11:08
5232
有一软件,算法如下,我不知这是什么算法,以及如何求逆,请算法高手帮忙看看:

该算法是大整数运算,在这我用小整数代替。给定一个初始整数,如1211(十六进制,以下都是),找出比该数大的2的幂数的最小值,这儿是2000。先通过2000,1211计算一数,算法中要用,计算如下:

  x0=0,x1=1 (初始值)

2000 mod 1211=def  商s1=1

  x2=s1×x1+x0=1

1211 mod def=422 商s2=1

  x3=s2×x2+x1=2

def mod 422=189 商s3=3

  x4=s3×x3+x2=7

......

79 mod 1e=1 商s7=4

  x8=s7×x7+x6=10f

1e mod 1=0 商s8=1e

  x9=s8×x8+x7=2000

其中x8=10f在下面计算中要用到。
假设上列计算为函数F1(2000,1211)=10f。
以上我有一点不明白,怎么x9又等于2000(初值)?这段计算是求什么?

好,下面进入算法的关键:

2000-1211=def
2000×3412=6824000  (3412是注册文件中的数,要逆求的东西,我先随便给了个值)

6824000 mod 1211=c26

假设A1=c26,A2=def,再给定一个32位二进数常数,设为C=c[31]c[30]....c[0](c[i]为对应的0或1)

for(i=0;i<32;i++)  (32为十进制)
{

if(c[i]!=0)
{
A2=F2(A1,A2)
}

A1=F2(A1,A1)

}

其中:

F2(A1,A2)
{
  A1×A2=a9457a            以A1=c26,A2=def为例计算
  a9457a×10f=b3308c26 ;    10f为上面计算出的x8,计算中10f不变
  取b3308c26的低d位=c26 ; d是初始数1211的位数
  c26×1211=db7a86         1211:初始数
  a9457a+db7a86=184c000     
  184c000右移d位=c26       计算结果, 相当于取高d位?
  
ruturn 计算结果             A1=c26,A2=def时等于c26      
}

得到循环计算结果A2后,再计算:

F1(1211,def)=99
D=A2×99 mod 1211

D要等于硬件序列号。

也许我描述的有些小错误,但大体是这样。大侠们看看,这是什么算法?该怎样求逆?谢谢。

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
RSA
2005-2-19 11:46
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 biocrk 发布
RSA


真的?怎么和我原来碰到的RSA不一样?能否讲的稍微详细点?谢谢。
2005-2-19 12:16
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
f03K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3g2C8j5h3&6&6i4K6u0W2j5$3!0E0i4K6u0r3N6$3c8Y4z5e0S2Q4x3V1k6E0K9h3#2S2i4K6u0r3j5$3!0#2M7Y4y4W2i4K6u0r3j5$3S2S2M7r3g2J5y4q4)9J5c8U0c8Q4x3X3f1I4i4K6u0W2K9s2c8E0
10bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3g2C8j5h3&6&6i4K6u0W2j5$3!0E0i4K6u0r3N6$3c8Y4z5e0S2Q4x3V1k6E0K9h3#2S2i4K6u0r3j5$3!0#2M7Y4y4W2i4K6u0r3j5$3S2S2M7r3g2J5y4q4)9J5c8U0c8Q4x3X3f1^5i4K6u0W2K9s2c8E0
讲的挺清楚的
2005-2-19 15:42
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
第一部分是用欧几里德算法求两个数的最大公约数.
应该是RSA.
看的不是很明白,可不可以再修正一下.
32位数的循环应该是求幂,但如果是RSA的话不是固定的32位.

PS,F2函数实在看不明白 ruturn c26 好象只返回常数
2005-2-19 23:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 evileast 发布
第一部分是用欧几里德算法求两个数的最大公约数.
应该是RSA.
看的不是很明白,可不可以再修正一下.
32位数的循环应该是求幂,但如果是RSA的话不是固定的32位.

........


第一部分的过程是求最大公约数,但要的结果好像不是最大公约数.
F2返回的不是常数,c26只是一个计算结果.我也是搞不懂F2是计算啥.

如果是RSA的话就麻烦了,大整数有2000多位呢.
2005-2-20 13:14
0
雪    币: 397
活跃值: (799)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsy
7
如果是RSA的话就麻烦了,大整数有2000多位呢.

看样子像是rsa,2048位
也可能是其他公钥算法,看起来差别不太大
2005-2-20 21:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
AB 5D F4 B0 CE 92 16 89 4F 1A D3 3D 24 97 E2 F1 AC 61 6C AC 22 55 6A F4 0F 1F 76 20 1E 53 4F 68
C9 48 9A 3C 5F 1F 5D 56 1A 56 74 3E 94 6E ED 5D 43 2D AE 91 4E 43 06 E4 A6 DA BF 73 3A C0 3D F5
02 CB E0 D3 29 B9 34 CE 02 D2 2A C4 AD 63 89 C6 EE E4 DF 03 46 73 1E 7F 62 AE D6 15 54 17 26 03
D7 B0 DA 1E 61 7B 5D 17 4B E6 A4 38 EE 06 DC 9C BC 15 EE 69 EA 51 37 28 2D 39 45 28 7B A8 96 64
8D 5A 21 52 4E 01 75 F0 26 96 DA C1 25 C9 6D 3F B4 64 35 D2 E6 C0 FA 97 F7 11 2F 5F C0 1C 5B A3
A4 D5 59 CC 61 98 4F AF 50 C2 F5 4F 9D CE 85 99 FD 6B A3 D0 0B 2D 7A 62 D7 9B 54 07 D5 DE F1 49
C5 93 6C AE 44 26 AE 54 CA 48 3E DF 7E A8 C9 A8 74 74 37 0E EE 3D E6 FE 5B 2B A1 F4 77 EF FD A9
A8 AA FC 32 67 3E E3 F9 B8 78 14 B9 B7 D8 48 85 F5 0D AA 18 8A 1A E5 3D 86 85 62 C7 4A C3 3D C2
85 00 9F C1 CC 53 2E 4B 2A 2B 00 00

有谁见过这样的大整数? 这是在OD中的形式,因此这个数应是2B2A4B2E......B0F45DAB
2005-2-20 22:30
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
9
这个软件叫什么?这种大数形式见过
http://bbs.pediy.com/showthread.php?s=&threadid=8226
2005-2-21 12:45
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
是RSA。
2005-2-23 10:14
0
游客
登录 | 注册 方可回帖
返回