【问题标题】:java exchanging public keys through a trusted serverjava通过可信服务器交换公钥
【发布时间】:2012-09-03 08:25:28
【问题描述】:

我想构建一个中继服务器,它可以安全地在 2 个对等方之间中继消息(用于 nat 遍历)以进行 P2P 通信。特别是,我参考了document 中图表中的步骤来交换密钥.....

特别是,它说“A 的公钥用 B 的公钥编码”,反之亦然。但是,我偶然发现了一个问题:当我将两个密钥都使用为 1024 位时,当我尝试使用公钥对另一个进行编码时,我实际上得到了一个 illegalblocksizeexception

阅读其他问题,一些人回答说公众可以使用 RSA 加密的数据大小是有限的。我可以知道是否有一些我可能遗漏的细节,在图表中被省略,或者我做错了,试图交换密钥......

【问题讨论】:

    标签: java encryption cryptography public-key-encryption


    【解决方案1】:

    RSA 公钥无法加密长度超过其模数位长度的数据。因此,一个 1024 位的 RSA 公钥最多只能加密 1024 位的数据。 1024 位公钥文件将大于 1024 位,因为模数只是总数据的部分。因此,一个 1024 位 RSA 公钥不能加密另一个 1024 位 RSA 公钥。

    更重要的是:您不应该使用任何东西来加密公钥。公钥就是这样——公开的;就其内容而言,无需保密。如果您希望“祝福”公钥适合特定用途,请使用具有某种意义的私钥对其进行签名。或者更好的是,为您的协议的所有参与者都信任的证书颁发机构颁发公钥证书。

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2013-08-08
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多