① 安卓网络请求数据时如何保证数据的完整性和安全性使用哪种加密
通过网络传输数据,需要保证数据的完整性、保密性,以及能够对数据的发送者进行身份验证。这些都需要通过一些加密算法实现。
对称加密:
加密和解密使用同一个密钥,特点:保证了数据的保密性。局限性:无法解决密钥交换问题。常用的算法有:DES,3DES,AES;
公钥加密:
生成一个密钥对(私钥和公钥),加密时用私钥加密,解密时用公钥解密,特点:解决了密钥交换问题。局限性:对大的数据加密速度慢。
单向加密:
提取数据的特征码,特点:定长输出,不可逆,可检验数据的完整性。局限性:无法保证数据的保密性。常用算法:MD5、SHA1、CRC-32。
三种加密方法各有优缺点,在时实际应用中,数据从发送方到达接收方,通常是这样应用的:
1) 首先对要发送的数据做单向加密,获取数据的特征码;
2) 对特征码用发送方的私钥进行加密生成S1;
3) 然后对S1和数据进行对称加密生成S2;
4) 最后将S2和对称加密的密码使用接收方的公钥进行加密。
这样一来数据在传输过程中的完整性、保密性以及对发送方身份的验证都能得到保障。
当数据到达接收方时,接收方先用自己的私钥对接收到的数据进行解密,得到密码和加密的数据;使用密码对加密数据解密,得到加密的特征码和数据;用发送方的公钥解密特征码,如果能解密,则说明该数据是由发送方所发;反之则不是,这便实现了身份验证;最后计算数据的特征码和解密出来的特征码做对比,如果一样,则该数据没有被修改;反之则数据被修改过了。