前言
前几天在和几个技术朋友聊天的时候聊到了关于加密解密和加签验签的过程,发现自己虽然略知一二,但是对具体细节还是不怎么了解,还是需要总结一下。
1. 加密
加密是为了保证数据传输的安全性。
非对称性加密:
非对称加密算法需要两个密钥:公开密钥(publickey
:简称公钥)和私有密钥(privatekey
:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
2. 签名
签名是为了保证数据传输过程中不被篡改。
3.图解
- 移动端:
移动端大体分为两个数据一部分是签名,另一部分是需要传输的数据。
我们对传输数据和本地private_key
进行组合然后进行摘要算法(MD5)生成签名。
对传输内容数据用公钥进行加密。
- 服务端:
服务端拿到被公钥加密的传输数据,然后用私钥进行解密拿到所需要的数据内容。
服务端拿到解密后的传输数据和private_key
进行和移动端相同的组合然后进行摘要算法生成签名串在去和拿到的sign
进行对比,如果相同则表示数据没有被篡改。