【问题标题】:Sending and receiving large RSA-encrypted cyphers发送和接收大型 RSA 加密密码
【发布时间】:2015-11-22 07:31:43
【问题描述】:

我刚刚完成了一个使用 RSA 加密方法加密整数的程序。在将这个程序从只能传输一个小整数(到目前为止大约 4 位)扩展到能够传输完整消息时,我面临两个主要问题。

问题 #1:我怎样才能避免只显示公钥?我的合作伙伴不需要 n 和我的公钥来为我加密消息吗? (下式)

加密:F(m,e)=m^e mod n = c,其中 m 是消息,e 是公钥,n 是两个随机生成的素数的乘积,c 是密码。

解密:F(c,d)=c^d mod n = m,其中d是私钥。

问题 #2:如何传输大型消息?我用作代码基础的article 涉及通过块进行加密,但我不知道从哪里开始这样的事情。从其他人的问题中,我了解到我应该将文件读入字节流,然后使用 BigInteger 类加密各个字节,但没有太多细节。这是怎么做到的?

【问题讨论】:

标签: java encryption cryptography rsa biginteger


【解决方案1】:

RSA 公钥是一对数字:公共指数和模数。

您不会使用 RSA 加密大型消息;使用 RSA 加密其他加密密钥。

您的发件人应该为 AES 选择一个随机密钥,并用它加密一条消息,在合适的模式下运行。然后他们将使用您的 RSA 公钥加密 AES 密钥,并向您发送 AES 加密的消息和 RSA 加密的密钥。

分组密码模式并非设计用于 RSA。它们专为 AES 和 TDEA 等分组密码而设计。

【讨论】:

    猜你喜欢
    • 2012-11-08
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多