这个问题看似简单,但我正在学习70-483 C#考试,有些困惑。
我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。
例如,我阅读的所有内容Wikipedia,Quora,codeproject显示用于加密的公钥和用于解密的私钥。
但是,我正在参加的实践考试(MeasureUp)似乎有所改变。
有时答案状态是使用公共密钥进行加密,但有时答案状态是使用私有密钥。
示例:
应用程序必须与DMV安全通信。 DMV必须 确保从您的应用程序发送的数据未在 过境。
回答示例:
生成数据的哈希。使用加密哈希 您公司的 private 密钥。发送数据并加密 散列到DMV。
然后,“显示答案”部分继续解释上述内容,明确说明使用私钥进行加密。
是否只是在这种情况下您必须考虑什么是公开的,什么是私有的?
例如
A)如果其他人只要自己不能自己创建一条消息就可以看到该消息-使用“保持私密”的密钥进行加密。
B)如果其他人可以发送消息,只要我是唯一可以读取该消息的人,请使用公开密钥进行加密。
我觉得MeasureUp可能有错,但是肯定的是,我比大公司更可能错了。
请有人可以解释/说明为什么这个答案正确吗?
答案 0 :(得分:4)
有两种不同的安全方案;在 encryption (加密)中,您使用公钥加密,然后使用私钥解密;但是通过签名,您将使用私钥签名,并使用公钥进行验证。
最有可能的问题是关于签名,而不是加密。
由于该问题提到:
DMV必须确保从应用程序发送的数据在传输过程中没有被修改。
这是签名(完整性和作者的证明),而不是加密。
答案 1 :(得分:2)
两个密钥均可用于加密和解密。区别在于:您应该是拥有唯一密钥的唯一。其他人都可以拥有公钥。
因此,如果您对某些内容进行加密,那么每个人都可以确定内容是由您发送的,因为公钥只有在确实使用私钥加密的情况下才能成功解密您的消息。
>另一方面,如果某人想向您发送一条只有您可以阅读的消息,他们将使用您的公共密钥对其进行加密。因此,只有您可以再次解密(或窃取您私钥的人)。