非对称加密算法 通过一个私钥一个公钥来完成。这个可以通过算法生成。私钥生产的东西公钥可以揭秘出来,公钥加密的东西,私钥也可以揭秘。于是可以把公钥公开,避免了对称加解密的尴尬。
说它的两个应用。
https 跟 ios应用签名
https 服务器下发自己的公钥给客户端,客户端收到之后再发送一个随机对称密钥给服务器。之后他们使用这个对称密钥进行通行。避免传输明文密码的尴尬,当然中间还有几个步骤。
ios使用开发人员的密钥对代码资源进行加密生成一堆描述文件。app安装到iphone上,iphone用包含在其中的开发人员的公钥对描述文件进行解密,进而验证app 的归属以及合法性。
中间还要加一个东西。证书这个东西。
公钥一般不单独出现。一般是包含在证书里面出现的。因为不管是浏览器,还是iphone都要先验证你这个公钥的合法性,才能进而使用这个公钥。证书一般有一个证书链,就是表明了这个证书是谁颁发的,比如apple。这个时候浏览器就去系统里面寻找apple的证书,而且确信apple的证书不会是假的。用apple的证书来验证当前需要验证的这个证书的合法性。当认定这证书合法,取出证书里面的公钥,开始做你想做的事情了。
当证书验证失败,就无法进行下一步操作,一个例子就是使用unity开发的ios游戏,如果单单允许https连接“https://kyfw.12306.cn/otn/regist/init” 会失败,因为它的证书是自己发的。