Answers:
这里有一些实际的例子,假设密钥A被保密,因此是私有密钥,密钥B被张贴在可公开访问的地方,因此就是公共密钥。
因此,如果您想向所有人发送消息,并且希望他们验证消息是否来自您,并且在发送时未更改,则您将发送消息并包括使用密钥A加密的消息哈希。然后,拥有密钥B可以解密哈希,将其与他们收到的消息进行比较,并验证消息是否来自您(由于只有拥有密钥A的人才能生成成功解密哈希的加密有效载荷,并且因为您是唯一拥有密钥A的人,它只能来自您)。这称为签名。
现在,假设某人想向您发送一条秘密消息,但不想透露自己的身份。他们可以使用对称密钥(如Zoredache提到的对称密钥便宜得多)对消息进行加密,然后使用该密钥并使用密钥B对其进行加密,然后将其发送给您。因为只有密钥A才能解密使用密钥B加密的内容,所以其他人看不到发送给您的消息中的内容。这就是普通加密的工作方式以及SSH交换数据的方式。
你写
“公钥在客户端上加密数据?但是,如果服务器只有公钥,那么服务器如何解密呢?”
我对此了解不多,但我想我可以很清楚地回答这一问题。
如果A要向B发送消息,则A使用B的公钥。这样,B就可以解密它。
如果A使用他自己的公钥来加密消息,那么B确实不能解密它。
在这里解释
http://www.comodo.com/resources/small-business/digital-certificates2.php