1

我有一个 RSA 密文c,即公钥(e,n)。(在哪里c = m^e mod n

现在我也知道纯文本m应该是"1234XXX"or "12345XXX",其中"XXX"是 3 位数字。

我可以在不测试所有 3 位数字的情况下找到哪一个是正确的吗?(我只想知道第一部分是"1234"or "12345",我不在乎是什么XXX。)

4

2 回答 2

3

你不能这样做(这是一种知道纯文本的攻击)。给定加密的 RSA 消息,您无法获取有关密钥或纯文本的任何信息。

(类似的纯文本消息不会产生类似的加密消息)

因此,在您拥有公钥的情况下,您仍然被迫加密所有可能的纯输入消息(蛮力),以发现相关的加密消息。

于 2011-03-28T06:53:39.197 回答
2

实际上,如果您正确使用 RSA ,那么您甚至无法通过尝试 1000 种可能性来猜测您的“XXX”。RSA 中的核心操作是模幂运算,但有一个称为填充的第一步,它将要加密的数据转换为一个大整数(模n)。

PKCS#1 RSA 标准指定了两种类型的填充;两者都包含一堆随机字节。结果如下:如果您使用相同的密钥对同一消息进行两次加密,您将获得两条不同的加密消息。确切地说,关键是要避免您提到的情况:能够“猜测”加密消息并验证猜测是否正确,仅使用公钥(它是公开的,因此假设由每个攻击者)。

因此,回答您的问题:如果您可以通过仅尝试 1000 次 RSA 加密或任何巧妙的捷径找到您的“XXX”,那么您的 RSA 是非常错误的。

于 2011-03-28T12:07:48.177 回答