本文概览:介绍了在项目中使用RSA的两种场景,如下
-
当客户端和服务器端进行交换互时,在request和response中都有需要加密的信息
-
当客户端和服务器端进行交换互时,在request有需要加密的信息,但是在respons中只需要明文信息,不需要加密
1 通过RSA和AES结合使用
1、应用场景和实例
(1)场景
当客户端和服务器端进行交换互时,在request和response中都有需要加密的信息,此时需要RSA和ASE结合使用。
(2)实例
- 登录验证功能
2、用户输入密码进行验证流程
具体步骤分为服务器端和客户端两部分:
(1)客户端
- 客户端生成一个16byte的key。
- 使用这个key对用户输入的密码进行AES加密
- 对key使用RSA进行加密
- 将RSA加密key和AES加密的密码信息进行BASE64处理,并通过POST方法传给服务器
(2)服务器端
- 通过RSA 对key进行解密
- ASE使用这个key对密码信息进行解密
- 将解密之后的密码进行进行登录验证。
3、验证成功之后返回信息
(1)服务器端
- 验证成功生成session
- ASE对session进行加密,并进行Base64处理
- 将生成的response返回给客户端
(2)客户端
- 获取Response中ASE加密的session信息
- 通过ASE进行解密。用到key就是在客户端发送请求时生成的那个16byte的key。
- 将服务器传来的session保存到cookie
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)实例
- 传银行卡等加密信息,或者通过支付密码进行支付时
- API签名验证也可以使用RSA。如下是使用MD5,也可以使用RSA来实现
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介绍参考如下:
(全文完)