签名与验签
签名与验签的目的是,看信息是不是被篡改。让接收方来判断发送方是不是合法的。
私钥签名,公钥验签。
为什么私钥签名,公钥验签?
反证法:
如果公钥签名,数据流被黑客截获后,由于公钥是公开的,黑客对数据进行篡改后,用公钥重新制作签名,发送给接收方,接收方无法判断来源是否合法。
如果用私钥签名,黑客截获后,修改数据,但是不知道真正发送发的私钥,无法修改签名;这样接收方对请求使用公钥验签时,发现请求的签名和用公钥生成的签名(验签其实就是用公钥重新计算下签名,看header中发送方发来的签名跟自己重新计算的签名是不是一样)不相同,也就拒绝请求了。
签名、验签的过程
微信支付的文档写的很清楚:
加密与解密
加密与解密的目的是,不要让别人看到明文。
公钥加密,私钥解密。
为什么公钥加密,私钥解密?
反证法: 如果使用私钥加密,数据流被黑客截取后,由于公钥是公开的,黑客就可以用公钥解密,查看到明文。比如身份证号、银行卡号这样的敏感数据,就要加密。
用公钥加密,黑客即使拿到数据流,由于没有发送方的私钥,那么也解密不了。
加解密过程
微信支付也写的很清楚。