Encryption 公钥和私钥可以互换吗?
一方面,我听到人们说这两个密钥完全可以互换,第一个密钥将解密第二个密钥加密的内容。这让我觉得这两把钥匙是可以互换的 但另一方面,RSA生成的密钥似乎具有不同的长度,在另一个主题中,使用私钥加密被称为“签名”,被认为比使用公钥加密更不安全。(二) 最重要的是,当公钥应该在野外公开分发时,私钥应该保持秘密。(三) 我计划从一个唯一的服务器接收数据,所以我的想法是在该服务器上保留一个公钥来加密数据,并将一个私钥分发给所有可能的客户,但这与(3)背道而驰。相反,如果我分发公钥并使用私钥加密数据,则根据(2)所述,加密的安全性较低 我应该分发公钥并使用私钥加密以满足(2)的要求,还是相反Encryption 公钥和私钥可以互换吗?,encryption,rsa,encryption-asymmetric,Encryption,Rsa,Encryption Asymmetric,一方面,我听到人们说这两个密钥完全可以互换,第一个密钥将解密第二个密钥加密的内容。这让我觉得这两把钥匙是可以互换的 但另一方面,RSA生成的密钥似乎具有不同的长度,在另一个主题中,使用私钥加密被称为“签名”,被认为比使用公钥加密更不安全。(二) 最重要的是,当公钥应该在野外公开分发时,私钥应该保持秘密。(三) 我计划从一个唯一的服务器接收数据,所以我的想法是在该服务器上保留一个公钥来加密数据,并将一个私钥分发给所有可能的客户,但这与(3)背道而驰。相反,如果我分发公钥并使用私钥加密数据,则根据(
注意:在我的情况下,性能不是问题。您的公钥用于加密消息,而您的私钥用于解密消息。因此,使用您分发的公钥,任何人都可以安全地加密消息,因为只有您(或使用您的私钥的人)可以解密它。要直接回答您的问题,不,它们不能互换。您不应该分发私钥
如果您想与多个可能的客户共享密钥,那么实际上有两种选择。要么放弃非对称加密,找到一种安全的方法将对称密钥(与AES(而非RSA)一起使用)分发给它们中的每一个,要么让它们生成密钥对并向您提供它们的公钥。然后,您可以解密来自服务器的内容,并为每个客户重新加密。客户的数量将有助于你在两者之间做出选择。答案取决于你问问题是出于对数学的好奇,还是纯粹出于实用的密码原因
- 如果您正在实施加密系统,您应该绝不公开您的私钥,因此从这个意义上讲,这些密钥绝对不能互换。此外,您描述的使用场景似乎与身份验证(而非机密性)非常匹配,因此服务器发送给客户端的消息确实应该签名而不是加密。如果您还需要保密性,则需要在协议中执行更多步骤
- 从数学角度来看,答案是“是”,假设您使用的私钥的内部表示形式仅包含模N和指数D,而另一个指数E是随机生成的。描述两个指数之间关系的公式是1=E*D(mod phi(N)),因此从数学角度看,哪个指数是哪个并不重要
- 公共指数E不是随机生成的,而是一个小的固定常数,如3或0x10001。另一方面,私钥指数D几乎与模一样大,因此私钥数据的大小几乎是公钥数据的两倍。如果您只获得了一个RSA私钥(N,D),那么您对公共指数的第一个猜测将是值3或0x10001中的一个,并且很容易检查猜测是否正确。如果希望关键点可以互换,则必须将首先选取的指数随机选取为大于1且小于φ(N)的奇数整数,且不具有与N或φ(N)相同的素数因子
- 私钥数据包括公模N的因子P、Q
- 私钥数据包括公开指数E