【发布时间】:2019-10-16 21:45:48
【问题描述】:
这个问题要求我们在给定的方程 c' = x^e mod N 中求解 x,因为我们已经知道 c', e, mod N。我查看了我的教程,但他们只给了我们一种获得 e 的方法,但不适用于 x。
我已经手动尝试解决它并得到了方程:
log c' = e log x mod N
但我不知道如何输入 Sage Math。
这是从教程中找e:
discrete_log (c',Mod(x,N))
【问题讨论】:
这个问题要求我们在给定的方程 c' = x^e mod N 中求解 x,因为我们已经知道 c', e, mod N。我查看了我的教程,但他们只给了我们一种获得 e 的方法,但不适用于 x。
我已经手动尝试解决它并得到了方程:
log c' = e log x mod N
但我不知道如何输入 Sage Math。
这是从教程中找e:
discrete_log (c',Mod(x,N))
【问题讨论】:
问题实际上是在问如何找到 c' 模 N 的第 e 个根。
例如,一个人想解决 12 = x^99 模 347。
这相当于找到 12 模 347 的 99 次根。
只需设置模 347 的整数环,
sage: A = Zmod(347)
sage: A
Ring of integers modulo 347
为该环中的元素 12 命名,
sage: a = A(12)
并向 Sage 询问该元素的第 99 个根:
sage: a.nth_root(99)
241
检查这是否回答了问题:
sage: A(241)^99
12
sage: pow(241, 99, 347)
12
sage: power_mod(241, 99, 347)
12
【讨论】:
Samuel 的回答远比这更全面,但如果您正在寻找一个真正快速的解决方法,您可以将这个(简单)函数用于小模数:
sage: solve_mod(x^99==12, 347)
[(241,)]
【讨论】: