对称加密和非对称加密
对称加密
通信双方使用同一个密钥,不同算法工作。数据发送方使用密钥和加密算法对数据进行加密,数据接收方使用密钥和解密算法对密文进行解密,还原数据。
基本模型如下图所示。

对称加密模型
- 常见对称加密算法DES、AES。
- 加密算法缺点:密钥需要数据发送方通过不可信网络传输给数据接受方,密钥存在泄漏风险。
非对称加密
通信双方使用不同的密钥,相同的算法工作。数据发送方持有公钥,数据接收方持有私钥。公钥由数据接收方通过网络发送给数据发送方。数据发送方通过加密算法和公钥对数据进行加密,数据接收方通过加密算法和私钥对密文进行解密,还原数据。
基本模型如下图所示。

非对称加密模型
- 常见非对称加密算法 RSA、DSA。
- 非对称加密算法私钥由数据接收方持有,不会在网络上传递,保证了密钥的安全。
- 非对称加密算法通常比对称加密算法计算复杂,性能消耗高。
- 非对称加密算法可用于数字签名。
数字签名
数字签名是安卓 APK 校验安装包是否被篡改、损坏的有效手段。数字签名采用了非对称加密 + Hash 两种技术。具体原理参见下图,主要是以下几步。
- 对原始数据进行 hash,得到数据摘要。
- 通过私钥和加密算法对数据摘要进行加密得到加密后的数据摘要。
- 将加密后的数据摘要附加在原始数据后,组合成签名后的数据,并发送个对方。
- 对方收到签名后的数据后,将原始数据和签名的摘要分开。同样通过 hash 原始数据得到一份数据摘要。
- 对加密后的数据摘要通过公钥解密,得到待验证的数据摘要。
-
对比两份数据摘要,只要完全一致则表明原始数据未被篡改或损坏。
数字签名模型
