4

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

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

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

4

1 回答 1

1

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

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

于 2012-09-03T08:36:57.690 回答