RSA 在加密句子时是如何工作的?

How does RSA work while encrypting a sentence?

我正在学习 RSA 加密,我已经了解如何加密单个字母。我无法理解 RSA 在加密句子时是如何工作的。

例如:单字母加密:A
加密=A^e(modn)

但是一句话。例如:语句加密:Hello World

是每个词都加密还是整个句子都加密?

都没有。在实践中,RSA 几乎总是与 AES 等对称密码结合使用,以加密更大的密文。

RSA本身当然不区分词句。 RSA——加密原语——对数字进行操作。 PKCS#1 中定义的 RSA,其中模幂运算之前或之后是填充/取消填充,但对位进行操作。反过来,密码库对字节进行操作,因为字节通常是可以在内存中直接寻址的最小元素。

为了使 RSA 安全,它需要与安全填充模式一起使用,例如 PKCS#1 v1.5 兼容填充或 OAEP。但是,这只会允许加密相对较小的消息。因此 RSA 通常用于加密随机生成的 AES 密钥(16、24 或 32 字节),然后使用该密钥加密几乎任何大小的实际明文消息。也可以使用例如RSA-KEM 建立 一个特定的密钥而不是直接加密一个。同时使用 RSA 和 AES 称为混合密码系统,因为它都包含非对称和对称加密。


如果您想使用 textbook / raw RSA 进行练习,那么您可以加密任何类型的数字,只要它小于模数即可。现在,如何将消息拆分为足够小的组件以及如何转换为数字/从数字转换完全取决于您 - 显然,只要您可以逆转该过程。

通常你只需将几个 8 位拉丁字符放在一起,比如 4,将它们转换为 32 位无符号数,然后在 RSA 计算中使用该数字。然后你拿下 4 等等。你可以在需要的地方填充空格。

显然你 运行 如果你的数字太小(1 的 public 指数的次方仍然是 1,那么你 运行 会立即遇到问题,毕竟,即使有一个大的密钥大小);要保护 RSA,需要 安全填充方法。同样,通常用于实践 RSA 的密钥大小太小(小于 512 位),无法提供任何类型的安全性。