Vorwort
Ich habe eine Einführung in die Verschlüsselung und Entschlüsselung des Konfigurationsinhalts des Konfigurationszentrums geschrieben: "Spring Cloud Build Microservice Architecture: Distributed Configuration Center (Verschlüsselung und Entschlüsselung)". In diesem Artikel gibt es ein Problem: Wenn der verschlüsselte Inhalt einige Sonderzeichen wie = und +enthält, wenn der Befehl curl localhost:7001/encrypt -d -im vorherigen Artikel zum Verschlingen und Entschlüsseln erwähnt wird, werden Sonderzeichen als verloren herausgestellt.
Zum Beispiel die folgende Situation:
$ curl localhost: 7001/Verschlüsselung -d ef34+5edo = a34c76c4ddab706fbcae0848639a8e0ed9d612b0035030542c9897e084a7427 $ curl localHost: 7001/Decrypt -d -DECRYPT -D -DECRYPT -D - A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C9897E084A7427EF34 5edo
Es ist ersichtlich, dass nach Verschlüsselung und Entschlüsselung einige Sonderzeichen verloren gehen. Da ich hier zuvor einen kleinen Trick hatte, nahm ich mir die Zeit, es auszuschreiben und zu teilen. Ich hoffe, es wird Ihnen hilfreich sein, wenn ich auf das gleiche Problem stoße.
Ursachen und Lösungen für das Problem
Tatsächlich wird der Grund für dieses Problem im offiziellen Dokument ausdrücklich erläutert. Ich kann mir nur die Schuld geben, zu nachlässig zu sein. Die Details sind wie folgt:
Wenn Sie wie diese mit Curl testen, verwenden Sie-data-urlencode (anstelle von -d) oder setzen Sie einen expliziten Inhaltstyp: Text/Ebene, um sicherzustellen, dass Curl die Daten korrekt codiert, wenn spezielle Zeichen vorhanden sind ('+' ist besonders schwierig).
Bei der Verwendung von Curl sollte daher die richtige Haltung sein:
$ curl localhost:7001/encrypt -H 'Content-Type:text/plain' --data-urlencode "eF34+5edo="335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033$ curl LOCALHOST: 7001/Decrypt -H 'Content-Typ: Text/Plain'--Data-Urlencode "335E618A02A0FF3DC1377321885F484FB2C19A499423EE777675B87597B033" EF34+5EDO =
Wie spielen wir also, wenn wir Tools schreiben, um zu verschlüsseln und zu entschlüsseln? Hier ist ein Beispiel für OKHTTP als Referenz:
private String -Verschlüsselung (String -Wert) {String url = "http: // localhost: 7001/encrypt"; Request request = new request.builder () .url (url) .post (requestBody.create (mediateType.parse ("text/plain"), value.getBytes ())) .build (); Call Call = Okhttpclient.newcall (Anfrage); Antwort Antwort = call.execute (); ResponseBody responseBody = response.body (); return responseBody.string ();} private String decrypt (String -Wert) {String url = "http: // localhost: 7001/entschlüsselt"; Request request = new request.builder () .url (url) .post (requestBody.create (mediateType.parse ("text/plain"), value.getBytes ())) .build (); Call Call = Okhttpclient.newcall (Anfrage); Antwort Antwort = call.execute (); ResponseBody responseBody = response.body (); return responseBody.string ();}Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.