公钥私钥啊感觉叫的好别扭

要服务器存的叫公钥,给用户的叫私钥,怎么感觉听的好别扭啊,应该是反了吧,服务器存的应该是私钥因为是不公开的所以存私,给用户的应该是叫公钥,应该是公开了已经,,但实际不是这样的,比如生成GITHUB的SSH KEY?

阅读 7k
6 个回答

这要分场合的

看你的标签贴得是ssh-key,这个场景下你的描述是有问题的,不是服务器『给用户』,而是用户生成好公钥,给服务器。不能公开的私钥,在用户自己手里,服务器拿到的公钥,即使被泄露了,没有任何影响。这种情况下,服务器是作为验证的一方,验证用户的身份。

如果是访问HTTPS网站这种场景,建立连接时,服务器会把自己的公钥证书给客户端,在客户端验证过证书没问题之后,需要用这个公钥来解密服务器用私钥加密的消息。这种情况下,用户端是验证的一方,验证服务器的真实性。

总之,A要验证B的身份,A拿公钥,B拿私钥,就这样简单~

公钥是锁,私钥是钥匙。

你把锁分发给别人,你自己留一把钥匙。

要验证的时候你拿你的钥匙去开锁,能开开就是验证通过了。锁被别人复制了没关系,他们并不能做什么。

但是你如果自己留锁把钥匙分给别人,那么钥匙被别人复制了谁都能开你的锁了。

从用户角度考虑问题就明白啦。

搞明白公钥加密体系就行了,何必在乎这些称呼

如果你是在服务器上生成公钥-私钥对,让后把私钥发给用户,那非对称加密机制已经丧失意义了。你在服务器上设置一个普通的(对称加密的)密码,然后发给用户,效果不是一样的吗?

非对称加密发明时,想要解决的问题就是:密钥可能在传递过程中泄露。通过在客户端生成公钥-私钥对,然后把公钥贴到Github上/传到服务器上,就保证了只有公钥需要通过网络传输,私钥始终在用户的本地放着,这样就保证了加密的可靠性。公钥就算公开也不影响加密,所以称之为公钥。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏