Heim > Artikel > Backend-Entwicklung > AES/RSA-Verschlüsselungsmechanismus
Während der HTTP-Kommunikation zwischen dem Server und dem Endgerät werden Pakete häufig von erfasst das Netzwerk. , Dekompilierung (Android APK-Dekompilierungstool) und andere Technologien, um die Adresse und Parameter der HTTP-Kommunikation zu erhalten Informationen: Wir verwenden die AES+RSA-Kombination zum Verschlüsseln und Entschlüsseln der Schnittstellenparameter: Der öffentliche Schlüssel wird zum Verschlüsseln der Daten und der private Schlüssel zum Entschlüsseln verwendet Die Daten werden gleichzeitig generiert, eine Eins-zu-eins-Entsprechung: A hat einen öffentlichen Schlüssel und einen privaten Schlüssel Mit dem öffentlichen Schlüssel kann B sie mit dem privaten Schlüssel und dem öffentlichen Schlüssel entschlüsseln. >2 Die AES-Verschlüsselung wird auch als symmetrische Verschlüsselung bezeichnet: Nachdem A das Passwort zur AES-Verschlüsselung verwendet, verwendet B dasselbe Passwort zur AES-Entschlüsselung der Chiffretext
Spezifische Operationsmethode:
1. Verwenden Sie openssl, um die relevanten
Attribute des Schlüssels
und der Server über den öffentlichen Schlüssel
3 verfügt. Android sendet eine Anfrage an den Server: Android generiert mithilfe des AES-Algorithmus zufällig ein Byte[]-Zufallskennwort für Json-Daten. Zur Verschlüsselung
4 Zu diesem Zeitpunkt kennt der Server jedoch den RandomKey des Clients nicht und muss ihn daher gleichzeitig an den Server übergeben. Andernfalls kann der Server die JSON-Daten nicht über AES entschlüsseln. Der RandomKey wird offengelegt, daher muss der RandomKey irreversibel mit RSA verschlüsselt werden. 5. Android verwendet RandomKey für AES-verschlüsselte Json-Daten und PublicKey für RSA-verschlüsselte RandomKey-Daten. Die Anfrage ist abgeschlossen .
Der Server empfängt die AES-verschlüsselten JSON-Daten und die Rsa-verschlüsselten RandomKey-Daten. Der Server entschlüsselt den ursprünglichen RandomKey von Android.
8. Verwenden Sie den ursprünglichen RandomKey, um eine symmetrische AES-Entschlüsselung der verschlüsselten Json-Daten durchzuführen. Zu diesem Zeitpunkt wurden die von der Android-Seite gesendeten Original-Json-Daten abgerufen. Führen Sie reguläre Servergeschäftsvorgänge durch und verschlüsseln Sie dann die zurückgegebenen Daten mit AES über RandomKey auf der Android-Seite. Anschließend wird die Antwort zurückgegeben.
9. Nachdem das Android-Terminal die Antwortdaten empfangen hat, kann es die AES-Entschlüsselung direkt mit dem zuvor generierten RandomKey durchführen.
Das detaillierte Flussdiagramm können Sie sich unten ansehen.
Ablaufdiagramm für die Client-Server-HTTPS-Datenübertragung:
1 Während des eigentlichen Entwicklungsprozesses wurde festgestellt, dass RSA und AES unterschiedliche Standards für die Generierung von Chiffretexten haben und nicht mit IOS kompatibel sind. IOS erfordert einen anderen öffentlichen Schlüssel im RSA-Algorithmus als JAVA. Detaillierte Lösungen finden Sie unter:
Zusammenfassung: Bei einem Leistungstest überschreitet der gesamte Client vom Senden verschlüsselter Daten bis zur Entschlüsselung und dem Erhalt der Originaldaten nicht mehr als 300ms (Übertragungstest für iPhone4- und Centos-Java-Server). Dieser Plan verwendet kein TOKEN, kann aber in Zukunft verwendet werden. Auch die
Aktualisierungdes öffentlichen Schlüssels muss weiter verbessert werden.
Das obige ist der detaillierte Inhalt vonAES/RSA-Verschlüsselungsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!