最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个sessionKey,后续业务接口内容用它来进行3DES加密处理。而登陆需要用到RSA进行签名加密处理。大概就是这样一个业务流程。
一、密钥生成及管理:
		  1、交互双方各生成一对密钥:私钥和公钥;
		  2、自己保留私钥,把公钥给到对方;
		  3、用自己的私钥进行签名,对方的公钥进行验签;
		  4、用对方的公钥进行加密,自己的私钥进行解密;
二、需要用到的密钥证书:
		  1、对方公钥
		  2、本方公钥
		  3、本方私钥
三、用户登陆
		  请求:
			  1、用【对方公钥】对明文数据进行【RSA加密】,結果進行Base64String	        		——> InputData
			  2、用【本方私钥】对明文数据MD5後进行【RSA签名】,結果進行Base64String	        ——> InputData_Sign
			  3、取【本方公钥】证书流,結果進行Base64.encode()	                  ——> CerData
			  4、用【本方私钥】对前置公钥内容MD5後进行【RSA签名】,結果進行Base64String    ——> CerData_Sign
		  响应:
			  1、用【本方私钥】对SessionKey进行【RSA解密】	                  ——> SessionKey
			  2、用【对方公钥】对解密后的SessionKey进行【RSA验签】	              ——> SessionKey_Sign
四、业务处理
		  请求:
			  1、用【SessionKey】对明文数据进行【3DES加密】	                   ——> InputData
			  2、用【本方私钥】对明文数据MD5後进行【RSA签名】	                 ——> InputData_Sign
		  响应:	
			  1、用【SessionKey】对返回数据进行【3DES解密】	                   ——> OutputData
			  2、用【本方公钥】对解密后的数据进行【RSA验签】	                  ——> OutputData_Sign
原文:https://www.cnblogs.com/caoweixiong/p/10899156.html