加密流程

加密流程

先由前端生成一个 UniqueID

  1. 前端生成 UniqueID (通讯密道标识)
  2. 把UniqueID 传给后台
UniqueID = getGuid()
http.post(url, {UniqueID})

后台接收 UniqueID 保存当前讯道id 且返回服务器公钥

ctx.body = {pubkey}

前端接收道服务器端公钥 生成对称秘钥 clientEncryptPassword

  1. 生成客户端秘钥
  2. 使用服务器公钥加密客户端秘钥
  3. 发送信道id和加密后的客户端秘钥给服务器端
clientEncryptPassword = randomString()
clientEncryptPassword  = encrypt(clientEncryptPassword , pubkey)
http.post(url, {UniqueID, clientEncryptPassword })

服务器端接收道前端秘钥 生成服务器端秘钥 使用前端秘钥加密发送给服务器端

  1. 使用clientEncryptPassword 解密 serverEncryptPassword并保存
serverEncryptPassword= encrypt(serverEncryptPassword, clientEncryptPassword )

传输流程

  1. 前端使用 clientEncryptPassword 加密数据
  2. 服务器端使用 serverEncryptPassword 加密数据
  3. 使用UniqueID 标识一组 信道

优点

  1. 对称加密 使用AES 加密算法
  2. 在传输层是安全的 因为不知道服务器端私钥所以在整个秘钥交换是安全的
  3. 每个用户信道都不一样 所以相同的数据不同的用户加密出来不一样 也就没有数据比对的问题
发布了1 篇原创文章 · 获赞 2 · 访问量 601

猜你喜欢

转载自blog.csdn.net/qqlovefanfan/article/details/104273560
今日推荐