【发布时间】:2020-11-01 02:36:19
【问题描述】:
如果 X = (a*b)mod(c),并且我们知道“b”和“c”的值,但不知道“a”的值,我们如何找到 (a)mod(c)?
我们可以用 X 除以 (b)mod(c) 或类似的方法吗?
【问题讨论】:
标签: math modular modular-arithmetic
如果 X = (a*b)mod(c),并且我们知道“b”和“c”的值,但不知道“a”的值,我们如何找到 (a)mod(c)?
我们可以用 X 除以 (b)mod(c) 或类似的方法吗?
【问题讨论】:
标签: math modular modular-arithmetic
您的建议无效。
例如
(3 * 4 ) mod 7 = 5
but 3 mod 5 != 5 / (4 mod 7) = 5/4
在这种情况下,我们可以注意到
(4*2 ) mod 7 = 1
然后
(2 * ((3 * 4) mod 7) mod 7
= 24 mod 7 = 3 = 3 mod 7
一般来说,如果 b 和 c 没有公约数,那么有一个 b' 有
(b'*b ) mod c = 1
然后
(b' * ((a*b) mod c) ) mod c
= (a* ((b'*b) mod c)) mod c
= (a*1) mod c
= a mod c
给定没有公约数的 b 和 c,您可以通过 extended Euclid algorithm 找到 b'
【讨论】: