实现索引演算来解决 DLP

问题描述

所以我需要实现索引演算算法来解决DLP。主要的 solveCalculus 函数应该只取 a,b 和素数 p 并返回 x,以便 a^x ≡ b mod p。现在我只有这个问题生成器:

def gen_dlp_prime(nbits):
    p_0 = random_prime(pow(2,nbits),False,pow(2,nbits-1))
    a = 2
    p = a*p_0 + 1
    while p not in Primes():
        a += 1
        p = a * p_0 + 1
        return (p,p_0,a)
def rnd_dlp(nbits):
    p,a = gen_dlp_prime(nbits)
    g = 2
    while pow(g,p) != 1:
        g+=1
        x = randrange(2,p)
        return (p,g,x,pow(g,p))

def dlp_set_generator(beg,end,step=10):
    print("----- a = b^x (mod p) -----")
    for nbits in range(beg,step):
        p,a = rnd_dlp(nbits)
        print("Nbits = {}\n\tp = {}\n\tg = {}\n\ta = {}\n\tx = {}".format(
            nbits,p,a,x))
dlp_set_generator(10,160)

其中 p 是素数,g 是 F_p* 的生成器,x 是从 2 到 p-1 的随机数,因此 a = g^x mod p。我的问题是如何实现这个算法?我在网上搜索了一些关于它的书籍,但我越来越困惑它是如何运作的。也许有人在 python 或 sage 中有实现?我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...