在AES加密(.Net Framework)中,公钥和私钥如何使用?
公钥和私钥是否组合成完整的密钥,然后算法使用公钥+私钥来加密数据?
(以下是用于示例目的的简化键)
例如: 公钥=12345 私钥=67890
因此,在生成加密结果时使用的密钥为:1234567890
公钥和私钥是否组合成完整的密钥,然后算法使用公钥+私钥来加密数据?
(以下是用于示例目的的简化键)
例如: 公钥=12345 私钥=67890
因此,在生成加密结果时使用的密钥为:1234567890
如其他人所说,AES是一个对称算法 (私钥密码学)。这涉及到一个单一的密钥,这是发送方和接收方之间共享的秘密。一个类比是一个没有信槽的锁定邮箱。任何想要留言或阅读邮件的人都需要有一个邮箱的钥匙。
如果你真的想知道AES的详细内容,有一部极好的漫画可以引导你了解。
公钥加密涉及到每个接收者使用两个相关的密钥 - 一个私钥,只有接收者才知道,以及一个相关的公钥,所有发送者都知道。
发送方使用接收者的公钥来加密消息。只有拥有与公钥匹配的私钥的接收者才能解密该消息。
公钥加密的一个比喻是一个带有邮槽的锁定邮箱。邮槽暴露且可供所有人访问。它的位置(街道地址)是公钥。任何知道街道地址的人都可以到门口通过邮槽投递书面信息。但是,只有拥有私钥的人才能打开邮箱并阅读消息。
AES是一种对称算法,因此它没有公钥和私钥 - 只有一个共享密钥。
最简单的形式:
AES是一种对称算法,它使用相同的密钥进行加密和解密。因此,拥有密钥的人可以读取您的消息。
私钥和公钥用于非对称算法,如RSA,通常人们使用公钥进行加密,使用私钥进行解密(只有HMAC或MAC会使用私钥进行加密,使用公钥进行解密)。公钥为所有人所知,私钥仅为您自己所知,因此没有人可以读取发送给您的消息。
你所描述的是对称密钥算法,其中AES就是其中之一。公私钥的原因在于使用对称密钥算法时,如何在未经安全保护的网络、邮件、电话等传递对称密钥而不被拦截。也许可以加密密钥,但那么如何传递该密钥呢?通过公私钥组合,这变得不那么重要了。那么如果两者都能解密其他人的文件,拥有公钥和私钥的意义是什么?为什么不都使用同一个密钥?