网络支付是目前十分常见的支付方式,而支付是一个安全等级非常高的场景,各个系统之间相互交错,每一条数据出现泄露都可能会造成极其重大的损失,所以加密算法在支付中一直充当着重要的角色。下面我们就来了解一下支付中那些常见的加密算法。

支付中的常见加密算法

RSA加密算法

RSA是一种非对称加密算法,可以在不传递密钥的情况下完成解密,避免了对称加密直接传递密钥所造成的被破解的风险。RSA加密/解密由一对密钥(公钥和私钥)共同完成,公钥是公开的,用来加密,私钥是保密的,用来解密。两者之间通过一定的算法关联,最核心的思想是利用对一极大整数做因数分解的困难性来保证安全性。

假设甲是支付机构,乙是支付机构的商户,甲乙之间需要进行数据的传输。如果要对数据进行加密/解密,则需要先生成密钥。甲生成一对密钥(公钥和私钥),公钥给乙,私钥自己保留。同样乙也生成一对公钥和私钥,公钥给甲,私钥自己保留。

RSA加密算法

有了密钥之后,就可以对传输的数据进行加密了。数据传输是双向的,所以支付行业传输数据的加密/解密也是双向的,具体步骤如下:

  1. 乙使用甲的公钥加密要传输的数据,并把数据上送给甲。
  2. 甲接收数据,使用自己的私钥解密。
  3. 甲将处理后的结果数据使用乙的公钥加密,并返回给乙。
  4. 乙接收返回的数据,并使用自己的私钥解密。

以上步骤是一个支付机构比较标准的加密/解密流程。甲乙双方分别使用对方的公钥加密,使用自己的私钥解密。

RSA加密算法

AES加密算法

AES是一种经典的对称加密/解密算法,使用加密函数和密钥来完成对明文的加密,然后使用相同的密钥和对应的函数来完成解密。AES的优点在于效率非常高,相比RSA要高得多。

AES加密算法

AES的加密和解密需要借助密钥,密钥是提前生成的,支付机构根据一定的规则生成密钥之后,传输给商户,商户上送数据需要使用密钥进行加密,支付机构收到密文之后使用相同的密钥进行解密。

AES和RSA的关系

在支付领域,考虑到对安全性和高效性的要求,通常不会只采用一种加密算法,而是采用多种加密算法组合加密的方式。

RSA加密算法虽然安全,但是计算量非常大,效率比较低,在高并发的情况下会面临严重的性能问题。

AES加密的密钥key在网络传输中有被拦截的风险,存在很大的安全隐患。

AES和RSA的关系

所以通常的办法是使用AES密钥对接口请求和响应内容进行加密,密文无法被第三方识别,从而防止接口传输数据泄露。使用RSA密钥对接口请求和响应内容进行签名,以确认接口传输的内容没有被篡改。不论接口内容是明文还是密文,RSA均可正常签名。

免责声明:素材源于网络,如有侵权,请联系删稿。