电商交互系统中,常用的加密手段

来源:互联网 发布:ppmeet网络视频会议 编辑:程序博客网 时间:2024/04/29 20:45

系统对接第三方支付,系统安全,应该是重中之重的一步。下面,我们就一起探讨常用的加密场景与加密用法。

首先,我们要明确一下概念。我们经常听说:“公钥加密,私钥解密”;还有就是“私钥加密,公钥解密”之说,然而,实际应用中,以及在密码学中,没有这么叫的。

 

公钥加密私钥解密

“公钥加密私钥解密”,通常称之为“公共密钥加密系统”。利用公钥进行加密,而用私钥解密,这种场景属于数据保护,数据传输过程中都是密文传输的,该中方式通常称为信封,如我们邮件时的信封,保证内部不被人看到。而如果利用私钥加密,利用公钥解密,虽然行得通,但任何拥有公钥的接收方都可以解开数据,而公钥本身就是公开的,这样实现不了数据保护的目的。

 

私钥加密公钥解密

“私钥加密公钥解密”,则通常称之为“私钥签名,公钥验证”,或“公钥密钥签名系统”。顾名思义,私钥加密,公钥解密,这种方式,是对数据做一个数字签名。在传输的数据中,加上一个数字签名,保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。该种方式通常称为手印,保证收到该信的人,能够确认发信人的身份。然而数据传输过程中,都是采用明文进行传输的。

 

而电商交互系统中,对接第三方支付时,一般都是选用“私钥签名,公钥验证”的方式。因为黑客窃取了用户的支付信息之后,它一旦篡改了支付信息,这笔交易就会交易失败。所以它拿到用户的支付信息时没有用的。

 

下面,一起来看一下,使用“私钥签名,公钥验签”的过程:

假设一个场景。某电商商家A,要与某第三方支付公司B对接。

 

首先,A电商与支付公司B,要保留自己的私钥,告知对方,自己的公钥。

即:A把A公钥告知支付公司B,A自己保护好A私钥;B把B公钥告知A电商,B自己保存好B私钥。

       

当电商A有用户购物时,即A欲传递支付信息给B,而支付公司B对接了很多家电商,为了告知B,这是A电商上面发送的支付请求,A会对该信息做一个数字签名。

1、通常,我们会对支付信息做一个MD5,得到支付信息的HASH值,即信息摘要。摘要格式:【MD5(信息)】


2、然后,A使用自己的私钥,对该摘要信息进行加密,得到【A私钥(MD5(信息))】


3、最后将明文请求信息与密文一起传递给B。B得到的支付信息:【(明文信息)+A私钥(MD5(信息))】

 

                              (明文+加密的摘要)

 

B接收到请求后,开始验签。得到如上格式的请求信息:【(明文信息)+A私钥(MD5(信息))】

1、使用跟A相同的HASH算法,如同一个MD5算法,对明文信息进行加工得到:【MD5(信息)!!!】


2、使用A提供的公钥文件,对传递过来的私钥信息进行解密,即对【A私钥(MD5(信息))】文件进行解密,过程如下:【A公钥(A私钥(MD5(信息)))】=【MD5(信息)】


3、比较【MD5(信息)】与【MD5(信息)!!!】,如果相同,表示(信息)在传递过程中没有被他人修改过,验签通过。


 

这样就完成A向B的一次请求,下面普及一下支付的知识。

这是,B已经确认了A的身份,且信息没有被篡改,那么开始跳到支付公司B的支付页面,用户开始在B的支付页面,完成支付工作。

具体的支付工作,是商户A的用户,在支付平台B完成的。那么商户A如何知道A有没有支付成功呢?这时候B就要回调A。并且分为手动回调和自动回调。支付成功后跳到一个支付成功页面,该页面有一个返回商户。手动回调是用户点击了返回商户,就会回调到A的方法,返回A的页面。如果用户直接关闭了返回商户页面,或者停留在该页面好久,都没有进行操作,则会定时触发异步回调,调用A的方法。

回调的过程中,也需要对数据进行签名。不过签名方式与上面完全类似。

 

B回调A时操作如下

1、同样,我们会对返回信息做一个MD5,得到返回信息的HASH值,即信息摘要。摘要格式:【MD5(返回信息)】


2、然后,B使用自己的私钥,对该摘要信息进行加密,得到【B私钥(MD5(返回信息))】


3、最后将明文请求信息与密文一起传递给B。B得到的支付信息:【(明文信息)+B私钥(MD5(返回信息))】

 

                                      (明文+加密的摘要)


A接收到从B发送的回调信息,开始验签。得到如上格式的请求信息:【(明文信息)+B私钥(MD5(返回信息))】

1、使用跟B相同的HASH算法,如同一个MD5算法,对明文信息进行加工得到:【MD5(返回信息)!!!】


2、使用B提供的公钥文件,对传递过来的私钥信息进行解密,即对【B私钥(MD5(返回信息))】文件进行解密,过程如下:【B公钥(B私钥(MD5(返回信息)))】=【MD5(返回信息)】


3、比较【MD5(返回信息)】与【MD5(返回信息)!!!】,如果相同,表示(信息)在传递过程中没有被他人修改过,验签通过。


 

通过上面的讲解,我们大体上介绍了,电商交互系统中,如何做数字签名。保证了信息在传递过程中,不被篡改。

 

文章推荐:

http://bbs.csdn.net/topics/90224776

http://justjavac.iteye.com/blog/1144151#comments

1 0