如何在模数运算中找到基值?

时间:2019-05-21 07:13:31

标签: encryption modular-arithmetic

我需要一种有效的公式,该公式将允许人们根据以下公式找出原始消息(msg):C = msg ^ e modN。如果为用户提供了C,e和N ,有没有一种有效的方法来计算味精?在此示例中,C是密文,e是公共密钥,N是公共模数。

我已经对模块化算术的全部内容进行了研究,并查看了一些详细的解释,但是,没有文章向我展示如何解决诸如此类的问题。

1 个答案:

答案 0 :(得分:0)

模量是一种不可逆的操作。充其量您知道msg ^ e = C + k*N,并且需要确定k的值。

考虑以下简单情况:

e = 2
N = 10
msg =  1 | C = 1  'Note1
msg =  2 | C = 4  'Note2
msg =  3 | C = 9  'Note3
msg =  4 | C = 6  'Note4
msg =  5 | C = 5
msg =  6 | C = 6  'Note4
msg =  7 | C = 9  'Note3
msg =  8 | C = 4  'Note2
msg =  9 | C = 1  'Note1
msg = 10 | C = 0

Line Graph showing the results of the above table

立即显而易见的是,如果使用C = 6,则可能意味着Msg = 6 Msg = 4(或Msg = 24等),广告无限),如果没有更多信息,就无法说出区别。

但是,假设已知的msge的值分别为相同 N ,那么您可以像这样缩小范围:

e = 3
N = 10
Msg =  1 | C = 1
Msg =  2 | C = 8
Msg =  3 | C = 7
Msg =  4 | C = 4  'We can now see that this
Msg =  5 | C = 5
Msg =  6 | C = 6  'Is different from this
Msg =  7 | C = 3
Msg =  8 | C = 2
Msg =  9 | C = 9
Msg = 10 | C = 0