我需要一种有效的公式,该公式将允许人们根据以下公式找出原始消息(msg):C = msg ^ e modN。如果为用户提供了C,e和N ,有没有一种有效的方法来计算味精?在此示例中,C是密文,e是公共密钥,N是公共模数。
我已经对模块化算术的全部内容进行了研究,并查看了一些详细的解释,但是,没有文章向我展示如何解决诸如此类的问题。
答案 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
立即显而易见的是,如果使用C = 6
,则可能意味着Msg = 6
或 Msg = 4
(或Msg = 24
等),广告无限),如果没有更多信息,就无法说出区别。
但是,假设已知的msg
和e
的值分别为相同 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