本文概览:介绍了在项目中使用RSA的两种场景,如下

  • 当客户端和服务器端进行交换互时,在request和response中都有需要加密的信息

  • 当客户端和服务器端进行交换互时,在request有需要加密的信息,但是在respons中只需要明文信息,不需要加密

1  通过RSA和AES结合使用

1、应用场景和实例

(1)场景

当客户端和服务器端进行交换互时,在request和response中都有需要加密的信息,此时需要RSA和ASE结合使用。

1

(2)实例

  • 登录验证功能

2、用户输入密码进行验证流程

具体步骤分为服务器端和客户端两部分:

(1)客户端

  • 客户端生成一个16byte的key。
  • 使用这个key对用户输入的密码进行AES加密
  • 对key使用RSA进行加密
  • 将RSA加密key和AES加密的密码信息进行BASE64处理,并通过POST方法传给服务器

(2)服务器端

  • 通过RSA 对key进行解密
  • ASE使用这个key对密码信息进行解密
  • 将解密之后的密码进行进行登录验证。

375887

3、验证成功之后返回信息

(1)服务器端

  • 验证成功生成session
  • ASE对session进行加密,并进行Base64处理
  • 将生成的response返回给客户端

(2)客户端

  • 获取Response中ASE加密的session信息
  • 通过ASE进行解密。用到key就是在客户端发送请求时生成的那个16byte的key。
  • 将服务器传来的session保存到cookie

184498

4、为什么需要通过RSA和AES使用,而不是只使用RSA

因为在登录完成之后需要返回给客户端加密的信息。参考 http://blog.csdn.net/chay_chan/article/details/58605605

5、为什么需要base64处理

需要后续查看资料(TODO),暂时的理解是其实不需要Base64编码处理也是可以的。

2 只使用RSA加密

1、应用场景和实例

(1)应用场景

当客户端和服务器端进行交换互时,在request有需要加密的信息,但是在response中只需要明文信息,不需要加密,此时只需要RSA就可以了。

2

(2)实例

  • 传银行卡等加密信息,或者通过支付密码进行支付时
  • API签名验证也可以使用RSA。如下是使用MD5,也可以使用RSA来实现

API实现签名验证

3 AES与MD5比较

MD5是不可逆的,即不可以解密。AES可以进行解密

4 参考文献

1、项目中RSA登录验证使用

http://blog.csdn.net/chay_chan/article/details/58605605

2、为什么要结合RSA和AES来使用

http://blog.csdn.net/chay_chan/article/details/58605605

关于RSA介绍参考如下:

加密算法之RSA

(全文完)

 

 

 

 

 

分类&标签