以商户与银行对接为例
商户私钥保留在商户 公钥交给银行
银行私钥保留在银行 公钥交给商户
1.商户发起请求>>>银行
用商户私钥加签(获取签名)
用银行公钥加密整个数据报文
2.银行收到请求
用银行私钥解密整个数据报文
(银行公钥加密只能用银行私钥解密,保证数据包无法被他人解密获取)
用商户公钥验签(校验签名)
(商户私钥加签只能用商户公钥验签,保证数据包确实来自商户,没有被篡改)
3.银行响应请求>>>商户
用银行私钥加签(获取签名)
用商户公钥加密整个数据报文
4.商户收到请求
用商户私钥解密整个数据报文
(商户公钥加密只能用商户私钥解密,保证数据包无法被他人解密获取)
用银行公钥验签(校验签名)
(银行私钥加签只能用银行公钥验签,保证数据包确实来自银行,没有被篡改)
5.完成一轮交易请求
rsa 加密和rsa 签名 是两个概念!
这两个用法很好理解:
- 既然是加密,自然是不希望别人知道我的消息,只有我自己才能解密,所以公钥负责加密,私钥负责解密。这是大多数的使用场景,使用 rsa 来加密。
- 既然是签名,自然是希望别人不能冒充我发消息,只有我才能发布签名,所以私钥负责签名,公钥负责验证。