数据传输加密 - - RSA,AES加密

 

数据传输加密

在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私信息时,开发者自然会想到对其进行加密传输,即使传输过程中被“有心人”截取,也不会将信息泄漏。对于加密算法,相信不少开发者也有所耳闻,比如MD5加密、BASE64加密,DES加密,AES加密,RSA加密等等。因为最近项目中使用到RSA,AES两种非对称与对称的加密算法,下面做一个总结记录。

 

 

有关加密算法

哈希算法:MD5、SHA-256;

对称加密算法:AES;

非对称加密算法:RSA。

其中,公钥和私钥是成对的,它们互相解密。公钥的字符串长度比较短,私钥的比较长。公钥加密,私钥解密;私钥签名,公钥验证。

公钥加密:不可被获取;

私钥签名:可被获取,但不可被篡改。

 

RSA

RSA加密算法,之所以叫RSA算法,是因为算法的三位发明者RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准,主要的算法原理就不加介绍,如果对此感兴趣的话,建议百度一下RSA算法。需要了解的是RSA算法属于非对称加密算法,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥和私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称算法。简单的说是“公钥加密,私钥解密;私钥加密,公钥解密”。

 

AES

AES加密算法,高级加密标准(Advanced Encryption Standard,AES)。在密码学中又称为Rijindael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

 

为什么在项目中要结合使用这两种加密算法

因为这是需要结合不同的场景和需求:

客户端传输重要信息给服务端,服务端返回的信息不需加密的情况

客户端传输重要信息给服务端,服务端返回的信息不需加密,例如绑定银行卡的时候,需要传递用户的银行卡号、手机号等重要信息,客户端这边就需要对这些重要信息进行加密,使用RSA公钥加密,服务端使用RSA解密,然后返回一些普通信息,比如状态码code,提示信息message,提示操作是成功还是失败。这种场景下,使用RSA加密是可以的。

 

客户端传输重要的信息给服务端,服务端返回的信息需要加密的情况

客户端传输重要信息给服务端,服务端返回的信息需要加密,例如客户端登录的时候,传递用户名和密码等资料,需要进行加密,服务端验证登录信息后,返回令牌token需要进行加密,客户端解密后保存。此时就需要结合这两种算法RSA+AES:

客户端加密过程主要分为以下三个步骤:

1.客户端随机生成AES的密钥,并进行公钥加密;

2.对其他的重要信息(用户名和密码)进行RSA公钥加密;

3.对各参数进行MD5摘要并使用RSA私钥签名。

注:MD5是不可逆的。

服务端解密过程主要分为以下三个步骤:

1.进行RSA公钥验证,保存数据;

2.使用RSA私钥解密AES;

3.需要返回的重要参数进行使用AES加密。

 

《移动端安全交互-加密过程场景解析》

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(android,总结)