你对非对称加密是不是有什么误解啊……流程大概是(伪流程,实际流程比这复杂多了):你请求 GitHub,告诉它你准备提交东西了;GitHub 随机选一个受支持的对称加密算法(比如 AES-256-GCM 之类的)、并随机生成一个密钥,把这两个信息用你之前上传给它的公钥加密,返回给你;你收到以后用你的私钥解密这段信息,得到第二步里提到的算法和密钥,然后用相应的算法和密钥去加密你原本要提交的内容,发送给 GitHub;GitHub 收到后用之前约定的算法和密钥去解密;结束。P.S. 你会发现其实还有对称加密参与进来,因为非对称加密的效率实在是太低了,不适合大量数据传输。所以只用非对称来传输对称算法和密钥,而真正的原始数据还是通过对称加密完成的。公钥加密的东西、只有私钥才能解开。就算别人拷贝走你的公钥,Ta 又没有你的私钥,上面讲的第三步 Ta 就进行不下去,Ta 能提交个啥?“公钥”是指交给别人的那一个、相对应的是自己收起来打死都不给别人看的“私钥”,并不是说非得找个地方跟发微博似的还得公开公示:“XXX 分钟前用户 XXX 上传了公钥 XXX”。GitHub 凭啥要给你看其他用户的公钥?
你对非对称加密是不是有什么误解啊……
流程大概是(伪流程,实际流程比这复杂多了):
P.S. 你会发现其实还有对称加密参与进来,因为非对称加密的效率实在是太低了,不适合大量数据传输。所以只用非对称来传输对称算法和密钥,而真正的原始数据还是通过对称加密完成的。
公钥加密的东西、只有私钥才能解开。就算别人拷贝走你的公钥,Ta 又没有你的私钥,上面讲的第三步 Ta 就进行不下去,Ta 能提交个啥?
“公钥”是指交给别人的那一个、相对应的是自己收起来打死都不给别人看的“私钥”,并不是说非得找个地方跟发微博似的还得公开公示:“XXX 分钟前用户 XXX 上传了公钥 XXX”。GitHub 凭啥要给你看其他用户的公钥?