Heim  >  Artikel  >  Backend-Entwicklung  >  AES/RSA-Verschlüsselungsmechanismus

AES/RSA-Verschlüsselungsmechanismus

PHPz
PHPzOriginal
2017-04-04 14:36:312046Durchsuche

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

einzugeben (Firmenname, E-Mail usw.). .) im Terminal und generieren Sie dann den öffentlichen Schlüssel und den privaten Schlüssel unter der aktuellen Adresse des Terminals. Es gibt insgesamt 7 Dateien (siehe den erweiterten Link im Anhang für die Verwendung der 7 Dateien). 🎜>2. Zu diesem Zeitpunkt wird davon ausgegangen, dass der Android-Client über den öffentlichen Schlüssel
Key

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


Hinweise

: AES/RSA-Verschlüsselungsmechanismus
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:

2. Bei der AES-Verschlüsselung können keine Schlüssel verwendet werden, die 128 Byte überschreiten, da Versionen über jdk1.7 keine Schlüssel mit mehr als 128 Byte unterstützen.

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

Aktualisierung

des ö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!

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