什么是私钥,什么是public?

What is the private key and what is public?

这道题看似简单,但我正在备考70-483 C#,有点迷茫。

我知道 Public/Private 键是数学上相互关联的属性。一个可以加密消息,另一个可以解密。

我读过的所有内容,例如Wikipedia, Quora, codeproject 显示用于加密的 public 密钥和用于解密的私钥。

但是,我正在进行的模拟考试 (MeasureUp) 似乎有所改变。

有时答案声明使用公钥加密,但有时他们声明使用私钥。

示例:

The application must communicate securely with the DMV. The DMV must be sure that data sent from your application was not modified in transit.

示例答案:

Generate a hash of the data. Encrypt the hash with the private key of your company. Send the data and the encrypted hash to the DMV.

然后'Show Answers'部分继续解释上面明确说明用私钥加密。

是否只是这种情况,您必须考虑上下文中什么是 public 以及什么是私有的?

例如

A) 如果其他人是否可以看到该消息并不重要,只要他们不能自己创建一条消息 - 使用您的密钥加密 "keep private"。

B) 如果其他人可以发消息,只要我是唯一可以阅读的人 - 使用 public 唯一可用的密钥加密。

我觉得 MeasureUp 可能出错了,但我肯定比大公司更容易出错。

有人可以解释/澄清为什么这个答案是正确的吗?

有两种不同的安全场景;在 encryption 中,您使用 public 密钥加密并使用私钥解密;但是使用 signing,您使用私钥签名,并使用 public 密钥进行验证。

很可能,问题是关于签名,而不是加密。

由于问题提到:

The DMV must be sure that data sent from your application was not modified in transit.

这是签名(完整性和作者证明),而不是加密。

两个密钥均可用于加密和解密。不同之处在于:您应该是 唯一 拥有私钥的人。其他人都可以拥有 public 密钥。

所以如果你加密了一些东西,每个人都可以确定内容是由你发送的,因为public密钥只有在它真的发送时才能成功解密你的消息已使用您的私钥加密。

另一方面,如果有人想向您发送一条只有您可以阅读的消息,他们会使用您的 public 密钥对其进行加密。所以只有你可以再次解密它(或者有人偷了你的私钥)。