Heim  >  Artikel  >  WeChat-Applet  >  Entwicklung der öffentlichen WeChat-Plattform: Nachrichtenverschlüsselung

Entwicklung der öffentlichen WeChat-Plattform: Nachrichtenverschlüsselung

高洛峰
高洛峰Original
2017-02-27 13:36:583054Durchsuche

Vor nicht allzu langer Zeit verwendete das Unternehmenskonto von WeChat eine obligatorische Nachrichtenverschlüsselung, und dann fügte das offizielle Konto auch optionale Nachrichtenverschlüsselungsoptionen hinzu. Derzeit sind die Verschlüsselungsmethoden für Unternehmenskonten und öffentliche Konten gleich (das Format wird geringfügig unterschiedlich sein).

Verschlüsselungseinstellungen

Rufen Sie das „Developer Center“ im Backend des offiziellen Kontos auf und wir können die Einstellungen für das URL-Docking sehen:

Entwicklung der öffentlichen WeChat-Plattform: Nachrichtenverschlüsselung

Klicken Sie auf [Einstellungen ändern], um die Änderungsseite aufzurufen:

Entwicklung der öffentlichen WeChat-Plattform: Nachrichtenverschlüsselung

Es gibt drei Verschlüsselungsmethoden:

Klartextmodus Originalnachrichtenformat

Kompatibilitätsmodus, Klartext und Chiffretext werden nebeneinander existieren. Es wird nicht empfohlen, offiziell veröffentlichte Produkte zu verwenden (da sie immer noch Klartext enthalten und den Verschlüsselungseffekt nicht erzielen können)

Sicherheitsmodus In diesem Modus wird die Nachricht verschlüsselt, und der Server des Entwicklers kann sie über den offiziellen Algorithmus entschlüsseln, um die ursprüngliche Nachricht im Klartextmodus zu erhalten.

Bei jeder verschlüsselten Nachricht müssen auch die zurückgegebenen Informationen verschlüsselt werden.

Verarbeitung verschlüsselter Informationen

Senparc.Weixin.MP hat die drei Arten von Nachrichten automatisch beurteilt. Während des Entwicklungsprozesses muss nicht auf Entschlüsselungs- und Verschlüsselungsprozesse geachtet werden verbleibt im Entwicklungsprozess im „Nur-Text-Modus“.

Im entsprechenden MessageHandler können wir den aktuellen Verschlüsselungsstatus anhand einiger Parameter ermitteln:

messageHandler.UsingEcryptMessage: Ob verschlüsselte Informationen verwendet werden (einschließlich Kompatibilitätsmodus und Sicherheitsmodus)

MessageHandler.UsingCompatibilityModelEcryptMessage: Ob der Kompatibilitätsmodus zum Verschlüsseln der Nachricht verwendet wird

Durch die Kombination der beiden oben genannten Eigenschaften können wir erkennen, welchen Verschlüsselungsmodus das Konto derzeit verwendet (in den meisten Fällen natürlich der Entwickler). muss sich nicht darum kümmern).

Um Informationen besser verfolgen zu können, hat MessageHandler das FinalResponseDocument-Attribut hinzugefügt:

messageHandler.ResponseDocument: Klartextstruktur des Antwortdaten-XML-Objekts

messageHandler.FinalResponseDocument: final Das XML-Objekt, das an den Server zurückgegeben wird, stimmt mit dem ResponseDocument überein, wenn es nicht verschlüsselt ist. Andernfalls wird es automatisch verschlüsselt.

Verschlüsselungsprinzip

Informationen zu Verschlüsselungsalgorithmen (einschließlich Beispiel-Downloads in mehrere Sprachen) ) finden Sie im offiziellen Hilfedokument: http://mp.weixin.qq.com/wiki/index.php?title=%E6%8A%80%E6%9C%AF%E6%96% B9%E6 %A1%88

Was ich hier erklären möchte, ist EncodingAESKey. Die offizielle Erklärung ist etwas verwirrend. Tatsächlich ist EncodingAESKey eine Base64-Kodierung von AESKey, und AESKey ist eine zufällige Zeichenfolge mit der Länge 32 (ausgewählt aus a-z, A-Z, 0-9). Da die Base64-Kodierungslänge von 32 Zeichen auf 44 festgelegt ist (das letzte Zeichen ist =), wird nach dem Entfernen des = der endgültige EncodingAESKey mit 43 Zeichen generiert. CodierungAESKey wird im Prozess der Nachrichtenverschlüsselung und -entschlüsselung verwendet und erfordert strenge Vertraulichkeit.

Das Folgende ist ein C#-Code zum Generieren von EncodingAESKey:

protected string CreateEncodingAESKey()
        {
            string aesKey = GetRadomStr(32);//获得a-z,A-Z,0-9的随机字符串
            var encodingAesKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(aesKey), Base64FormattingOptions.None);
            return encodingAesKey.Substring(0, encodingAesKey.Length - 1);
        }


Weitere Artikel zur Entwicklung der öffentlichen WeChat-Plattform: Nachrichtenverschlüsselung finden Sie hier die chinesische PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn