首页
社区
课程
招聘
如何求 (a exp b) mod c = d, 中的a
发表于: 2007-8-13 17:11 8349

如何求 (a exp b) mod c = d, 中的a

2007-8-13 17:11
8349
现在有几个大整数 a b c d,
满足 (a exp b) mod c = d
b c d 都已知如何求a,除了暴力法有没有其他的方法

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 190
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没有了。暴力搞吧
2007-8-13 19:48
0
雪    币: 217
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
现在有几个大整数 a b c d,
满足 (a exp b) mod c = d
这样搞比较好。
假设 a exp b=x  (x= 1...n )
那么d+c*x= a exp b
a= (d+c*x)取b次根。 x从1.....100或者更大,
如果等到的a 是整数a(a取整,或者0.001的范围就OK),而不是小数
一般应该有多个a的
2007-8-13 20:00
0
雪    币: 220
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=;]...[/QUOTE]
我也知道是有多个a,  但是现在b是51419是一个素数。要求51419次根,就是这个不会 啊
2007-8-13 22:50
0
雪    币: 220
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=;]...[/QUOTE]
我的微积分快忘光了,有谁还记得微积分,用微分方程,帮忙看看。
2007-8-13 23:01
0
雪    币: 1211
活跃值: (2745)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
C是多少???
2007-8-14 14:02
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
7
把所有已知的数都列出来,看看有什么特点。现在关键是C
2007-8-14 15:43
0
雪    币: 220
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
C是两个数组
    private static final byte bpn[] = {
        70, 69, 53, 49, 65, 67, 67, 65, 68, 68,
        55, 55, 57, 65, 49, 49, 51, 57, 54, 70,
        70, 57, 69, 67, 68, 54, 51, 49, 67, 66,
        57, 69, 53, 57, 53, 50, 54, 65, 68, 70,
        70, 56, 48, 68, 66, 53, 69, 54, 49, 68,
        70, 68, 69, 48, 70, 50, 56, 49, 51, 66,
        48, 48, 70, 54, 69, 54, 52, 52, 53, 49,
        67, 66, 66, 70, 55, 49, 51, 68, 49, 51,
        51, 55, 49, 49, 57, 57, 56, 53, 50, 70,
        69, 69, 50, 66, 56, 65, 53, 50, 69, 54,
        51, 50, 53, 69, 54, 55, 65, 54, 57, 48,
        53, 70, 57, 49, 70, 65, 69, 52, 49, 67,
        48, 65, 65, 48, 54, 48, 70, 52, 54, 70,
        50, 49, 54, 70, 67, 57, 52, 56, 49, 54,
        55, 66, 66, 57, 68, 65, 51, 52, 69, 51,
        65, 48, 65, 51, 53, 67, 50, 67, 52, 70
    };

        private static final byte bpd[] = {
                55, 51, 48, 50, 56, 49, 66, 67, 49, 66,
                52, 66, 68, 52, 67, 68, 48, 55, 56, 70,
                57, 52, 65, 68, 51, 48, 51, 54, 50, 69,
                49, 51, 57, 54, 49, 55, 52, 50, 53, 50,
                57, 55, 48, 50, 65, 70, 56, 67, 67, 50,
                68, 53, 52, 57, 52, 69, 51, 70, 48, 69,
                48, 67, 57, 48, 55, 50, 65, 51, 55, 69,
                69, 57, 48, 66, 70, 69, 50, 68, 52, 54,
                70, 53, 68, 49, 54, 50, 54, 69, 69, 55,
                48, 53, 54, 49, 66, 49
            };

                byte[] abyte = new byte[bpn.length+ bpd.length];
                System.arraycopy(bpn, 0, abyte, 0, bpn.length);
                System.arraycopy(bpd, 0, abyte, bpn.length, bpd.length);
               
                BigInteger bigInteger1 = new BigInteger(new String(abyte),16);
bigInteger1 就是 c 拉
2007-8-15 21:31
0
雪    币: 220
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
c是一个1024bit的数
2007-8-15 21:34
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
应该是RSA算法,你需要分解C。
2007-8-15 21:48
0
雪    币: 220
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=;]...[/QUOTE]
rsa我是不行了,看来只能爆破了。:(
2007-8-16 13:31
0
雪    币: 217
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
如果 x=a exp b,那么ln(x)=b ln(a) ,ln(a)=ln(x)/b, 然后求反指数表的方法就可以获得a. 这个很容易。
2007-8-16 23:15
0
游客
登录 | 注册 方可回帖
返回
//