我正在学习 RSA 加密,并且已经了解如何加密单个字母。我无法理解 RSA 在加密句子时如何工作。
For eg: 单字母加密:A
加密= A^e (mod n)
但就一句话来说。例如:句子加密:Hello World
是每个单词都被加密还是整个句子都被加密?
两者都不。在实践中,RSA 几乎总是与对称密码(例如 AES)结合使用来加密更大的密文。
RSA 本身当然不区分单词和句子。 RSA - 加密原语 - 运行于numbers。 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,安全填充方法是required。同样,通常用于实践 RSA 的密钥大小太小(小于 512 位),无法提供任何类型的安全性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)