加密的搭配使用及客户端上的实践

93 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5天,点击查看活动详情

搭配使用

客户端发送数据

数字信封:用非对称加密进行加密对称加密的密钥

客户端不使用服务端的公钥进行加密数据(体积大速度慢),而是客户端自己生成一个密钥,用这个生成的密钥对称加密数据(时间段速度快)。然后使用服务端公钥加密生成的密钥一起将对称加密后的数据和费对称加密后的密钥一起发给服务端

密钥是客户端自己生成的,对称加密最大也就是256位,比非对称最大少了256位。

为什么这样会更安全?

使用非对称加密进行加密对称加密的密钥只有非对称加密的密钥才能解开。

得到对称加密的密钥之后就可以解开数据了

服务端收到数据

服务端用自己的非对称密钥解密客户端的对称加密密钥。通过客户端对称加密密钥进行解密发过来的数据,这样就知道了客户端发送的数据是什么?

来列举一个该模型的一个实践,我们都知道Android的APK在安装阶段都有一步验证签名的阶段,其也是通过SHA1值来保证的数据完整性,这里Android机器本身就是个服务器,而我们的APK是客户端。当APK安装新版本的时候,Android机器会提取里面的内容做校验

Android的apk签名

keytools工具

jks文件包含一个密钥对,自签名证书(在生成的时候填一些别名国家信息,有消息各种东西)

用私钥加密这些信息,然后吧公钥塞到自签名证书里面

jks里面有证书,证书里面有公钥会去解签名,然后进行反向hash对比数据内容识别内容是否会篡改

https比http在应用层多了一个ssl或者tsl证书。证书就是刚刚上面讲的东西。