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

Eth*_*han 3 encryption cryptography rsa encryption-asymmetric

我正在学习RSA加密,并且已经了解如何加密单个字母。我在理解RSA加密句子时如何工作时遇到问题。

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

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

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

Maa*_*wes 8

都不行 实际上,RSA几乎总是与对称密码(例如AES)结合使用来加密较大的密文。

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

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


如果您想使用教科书/原始 RSA进行练习,则可以加密任何种类的数字,只要它小于模数即可。现在,如何将消息拆分为足够小的组件,以及如何将数字转换为数字,完全取决于您自己-显然,只要您可以逆转该过程即可。

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

显然,如果您的数字太小,您会遇到直接的问题(1代表公共指数的幂仍然是1,毕竟,即使密钥很大,也不是很安全);到安全的RSA是一个安全的填补方法需要。同样,通常用于实施RSA的密钥大小太小(小于512位),无法提供任何类型的安全性。