Ich habe einen Webserver, auf dem mysql und php laufen, der Daten an eine json-Zeichenkette sendet.
Ich habe einen zweiten Webserver, der die Daten liest und dann anzeigt.
Im Moment läuft alles gut.
Ich muss einige sensible Daten in die Zeichenfolge einfügen, also habe ich mich gefragt, was der beste Weg ist, den JSON mit PHP zu verschlüsseln / entschlüsseln?
Kann jemand helfen?
Ich wette, der beste Weg ist die Verwendung von SSL (HTTPS) und ich empfehle Ihnen, den OWASP Guide zu lesen besonders die Anleitung .
Es hängt wirklich davon ab, wie sensibel die Daten sind. Aus meiner Erfahrung ist jedoch eine einfache PHP-Verschlüsselung in der Regel sinnvoll. Normalerweise würde ich die sensiblen Felder in den JSON-Datenfeldern verschlüsseln, bevor ich sie in eine JSON-Zeichenfolge umwandele.
Hier ist der Code für den Verschlüsselungsteil.
$ key = 'Passwort zu (en / de) crypt'; $ string = 'Zu verschlüsselnde Zeichenfolge'; // notiere die Leerzeichen
Zu verschlüsseln:
%Vor%Entschlüsseln:
%Vor%Sie sollten jedoch immer Hash-Passwörter (MD5, SHA1) verwenden, vorzugsweise mit etwas Salz.
Speichern Sie einen privaten Schlüssel auf dem Server und verwenden Sie die DES-Verschlüsselung. Es ist ein 2-Wege-Algorithmus.
BEARBEITEN:
Pro Kommentar scheint es, dass ich die Frage falsch interpretiert habe. Meine Vermutung war, OP würde gerne verschlüsselte Daten im Internet wie in einer E-Mail versenden oder etwas später die Daten dann wieder abrufen und entschlüsseln können. Ich werde sicher sein, durch Kommentare in der Zukunft zu klären, bevor ich eine Antwort einreiche.
Natürlich wird SSL (HTTPS) benötigt, um Daten sicher über das Internet zu übertragen.
Aber das sagte, es gibt immer noch Gründe, um JSON-Daten zu verschlüsseln, bevor Sie sie gesendet haben.
Ich hatte ein Problem mit der Verschlüsselung von JSON-Daten. Es wurde von "\ t" in JSON-Daten verursacht. Sie müssen sie vor der Verschlüsselung entfernen. Andernfalls wird es ein Problem geben, wenn Sie es zurück zu einem passenden json Format entschlüsseln möchten.
$ plain_txt = str_replace ("\ r", "", $ plain_txt);
$ plain_txt = str_replace ("\ n", "", $ plain_txt);
$ plain_txt = str_replace ("\ t", "", $ plain_txt);
Siehe ein Arbeitsbeispiel: Ссылка