首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RSA上加密大于N的数字?

如何在RSA上加密大于N的数字?
EN

Stack Overflow用户
提问于 2014-03-03 07:55:37
回答 2查看 1.6K关注 0票数 1

下面是一个示例:

P= 11,q= 5,N= p*q = 55,选择加密指数e= 3,所以d=e^-1mod (p-1)(q-1) = 27。

如果我想加密x=13,x^e=13^3=52mod55。

我知道如何加密小于N的数字,但如何加密大于N的数字?

我知道如果X大于N,我们应该将X分解成几个部分并分别加密,但我不知道RSA如何分解它?

任择问题:

如何在IOS或python上用RSA加密文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-03 17:40:01

您不使用加密长消息。

正确的方法是使用混合加密而不是:

  • 生成一个随机的AES密钥,用AES加密实际数据。最好使用认证模式,如AES-GCM。
  • 用RSA加密AES密钥。这个密钥(126到256位)足够小,可以容纳在一个RSA块中。例如,使用小而弱的1024位RSA密钥,您有500-700位用于实际数据(其余由填充)。
  • 密文由RSA加密的AES密钥和AES加密的文件组成。 在这里应用填充(即OAEP )对于安全性是非常重要的。大多数其他填充,包括流行的PKCS#1v1.5填充是不安全的。

不要试图将文件分割成用RSA加密的块。没有标准的方法来做这件事,因为这是个坏主意。

票数 3
EN

Stack Overflow用户

发布于 2014-03-03 15:34:30

RSA算法根本不处理消息的分解。它只加密固定大小的整数。这种加密算法被称为分组密码,因为它以固定大小的“块”加密消息。

块密码本身通常不指定块是如何获得的。所以,你必须决定如何分裂这条信息。将整数分解为固定大小块的可能方法之一是将其转换为基本N,并分别对每个数字进行加密。

请注意,您不应该对每个数字进行独立于其他数字的加密,因为这是不安全的。事实上,这样做相当于使用单字母密码。。块密码有不同的操作模式,可以用来安全地加密多个块。您应该阅读维基百科页面来了解它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22141410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档