【发布时间】:2021-12-15 00:37:16
【问题描述】:
当使用power_mod(a,b,c) 时,我们得到a^b % c 返回x。我有a,c, 和x,但我很难扭转%c。
是否有一个已经存在的函数来反转这个,或者我需要实现欧几里得算法来找出 b 是什么并返回它?
【问题讨论】:
-
不可能。
b的许多值将产生一个给定的x。
当使用power_mod(a,b,c) 时,我们得到a^b % c 返回x。我有a,c, 和x,但我很难扭转%c。
是否有一个已经存在的函数来反转这个,或者我需要实现欧几里得算法来找出 b 是什么并返回它?
【问题讨论】:
b 的许多值将产生一个给定的x。
这听起来像是“discrete logarithm”问题。如果不是,请更清楚(例如,给出一个具体的数字示例)。但是,如果是这样,正如引用的文章所说,对于一般情况,没有已知的有效方法。
由于您在问题中标记了“sage”,请参阅 Sage discrete_log() 函数的文档。它实现了前面引用的 Wikipedia 文章(“Pohlig-Hellman and baby step Giant step”)中提到的一些方法。
【讨论】: