31

在 AES 加密(.net 框架)中,如何使用公钥和私钥?

是不是把公钥和私钥组合成一个全密钥,然后算法用公钥+私钥对数据进行加密?

(下面使用的简化键用于示例目的)

例如公钥 = 12345 私钥 = 67890

所以生成加密结果时使用的密钥是:1234567890

4

5 回答 5

95

正如其他人所说,AES 是一种对称算法(私钥加密)。这涉及一个密钥,它是发送者和接收者之间的共享秘密。一个类比是一个没有邮箱的锁定邮箱。任何想留下或阅读信息的人都需要有邮箱的钥匙。

如果你真的想了解 AES 的血腥细节,这里有一部很棒的卡通片可以引导你一路走好。

公钥密码术涉及每个涉及的接收者的两个相关密钥 - 一个只有接收者知道的秘密的私钥和一个所有发送者都知道的相关公钥。

发件人使用收件人的公钥加密邮件。该消息只能由具有与公钥匹配的私钥的收件人解密。

公钥加密的一个类比是带有邮槽的锁定邮箱。邮筒是公开的,可供公众使用。它的位置(街道地址)是公钥。任何知道街道地址的人都可以走到门口并通过插槽发送书面信息。但只有拥有私钥的人才能打开邮箱并阅读邮件。

于 2008-11-07T21:33:16.040 回答
24

AES 是一种对称算法,因此它没有公钥和私钥——只有一个共享密钥。

于 2008-11-07T19:48:35.083 回答
5

以最简单的形式:

AES 是一种对称算法,它使用相同的密钥进行加密和解密。因此,任何拥有密钥的人都可以阅读您的消息。

私钥和公钥是针对RSA等非对称算法的,通常人们使用公钥加密,私钥解密(只有HMAC或MAC会使用私钥加密,公钥解密)。公钥是众所周知的,私钥只有你自己知道,所以没有人可以阅读发给你的消息。

于 2011-07-14T15:07:06.040 回答
4

我不知道 .net 框架具体是如何工作的(这个问题可能应该被标记为 .net),但根据你的问题,它听起来像是实现了公钥/私钥加密,只是使用 AES 作为其对称组件。

进行公钥加密的通常模式是

  • 生成对称密钥
  • 使用 AES 等对称算法,使用此密钥加密数据。
  • 使用 RSA 等非对称算法,使用公钥加密对称密钥。
  • 将加密的 sym 密钥与加密数据捆绑在一起

数据本身首选对称算法的原因是非对称算法非常慢。

鉴于他们无法测试安全性(对于一些候选人来说,他们真正拥有的只是没有休息时间),选择 Rijndael 进行 AES 的原因(主要)与性能有关。

于 2009-08-06T09:31:34.580 回答
3

公钥与私钥相关联。公钥(RSA)分发给“野生”和任何想要发送加密文件的人(一般来说这里),他们将请求公钥并对其进行编码。任何获得文件访问权限的人都无法读取密文,即使他们拥有公钥。

解码文件需要私钥。只要私钥保持私密,任何人都不会猜测或破解密钥。不可能,也不是不可能。

真正的问题是保持私钥的私密性。大多数破解都是通过社交黑客完成的。勒索、记录器和中间人公钥转换是比暴力破解密码或密钥更有可能的其他方式。

在你对布朗多的评论中,你问

如果两者都可以解密其他人,那么拥有公钥和私钥有什么意义呢?为什么两者不具有相同的密钥?

您所描述的是对称密钥算法,AES就是其中之一。使用公钥-私钥的原因是,使用对称密钥算法,您如何通过不安全的网络、邮件、电话或其他不被截获的密钥传递对称密钥。也许加密密钥,但是你如何传递那个密钥?使用公钥-私钥组合,这变得不那么相关了。

AccessData 营销副总裁乔恩·汉森 (Jon Hansen) 表示:“在大多数情况下,在世界上所有计算机都考虑到暴力破解 256 位密钥所需的所有信息之前,太阳被烧毁的可能性更大。” Corp,位于犹他州林登的公司,开发了支持 DNA 的软件。

于 2008-11-07T21:34:33.463 回答