转载:http://mpush.mydoc.io/?t=134350    https://mpusher.github.io/docs/chapter6.html

      **交换方案:https://mpusher.github.io/docs/chapter6.html,是MPush主要流程之一,今天我们就来熟悉下。

    交换流程

[004]MPUSH消息推送系统开发教程第4篇-**交换方案

    交换方案

  1.  算法上同时使用了非对称加密算法(RSA)和对称加密算法(AES)。(见概念普及)
  2. 在客户端预埋好由服务端生成好的公钥。 服务端生成的公钥和私钥在mpush\conf\conf-pub.properties。在客户端预埋好由服务端生成好的公钥,位于源代码mpush-android\app\src\main\java\com\mpush\demo\MainActivity.java里面的第49行。
  3. 客户端生成随机数R1=Random(16),并通过RSA公钥加密后发送给服务端。CT=RSApub(R1)
  4. 服务端用RSA私钥解密客户端发送的数据取得R1, R1=RSApri(CT),同时生成随机数R2, R2=Random(16),并以R1为Key使用AES加密R2然后把加密后的数据发送到客户端。CT=AESr1(R2)。
  5. 客户端以R1为Key使用AES解密服务发送的数据取得R2,R2=AESr1(CT)。
  6. 此时客户端和服务的同时都拥有随机数R1、R2,然后使用相同的混淆算法生成会话**(sessionKey), sessionKey=min(R1,R2)。之后传输的数据都以此值作为AES加密的**。 AESsessionKey(data)。

    概念普及

      非对称加密算法(RSA)  :非对称加密算法需要两个**:公开**(publickey)和私有**(privatekey)。公开**与私有**是一对,如果用公开**对数据进行加密,只有用对应的私有**才能解密;
        对称加密算法(AES)  :对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密**(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的**及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的**只有一个,发收信双方都使用这个**对数据进行加密和解密,这就要求解密方事先必须知道加***。

相关文章: