以下是一个例子:
p = 11,q = 5,N = p * q = 55,选择加密指数e = 3,所以d = e ^ -1 mod(p-1)(q-1)= 27。
如果我想加密x = 13,则x ^ e = 13 ^ 3 = 52mod55。
我理解如何加密小于N的数字,但是如何加密大于N的数字?
我知道如果X大于N,我们应该将X分解成几个部分并分别加密它们,但我不知道RSA如何分解它?
可选问题:
如何在IOS或python上使用RSA加密文件?
答案 0 :(得分:2)
RSA算法根本不处理消息的分解。它只加密固定大小的整数。这种加密算法称为block cipher,因为它以固定大小的“块”加密消息。
块块密码本身通常不指定块的获取方式。因此,您必须决定如何拆分邮件。将整数分解为固定大小的块的一种可能方法是将其转换为基础N
,并分别加密每个数字。
请注意,您应不从其他数字独立加密 ,因为这样做不安全。事实上,这样做相当于使用单字母密码。 。您可以使用块密码的不同操作模式来安全地加密多个块。您应该阅读wikipedia页面以了解它们。
答案 1 :(得分:2)
您没有使用RSA加密长消息。
正确的方法是使用hybrid encryption代替:
密文由RSA加密的AES密钥和AES加密文件组成。
在此处应用填充对于安全性至关重要,即OAEP。大多数其他填充,包括流行的PKCS#1v1.5填充都不安全。
请勿尝试将文件拆分为使用RSA加密的块。没有标准的方法可以做到这一点,因为这是一个坏主意。