Ich versuche, verschlüsselte Daten über die URL zu einer anderen Site zu senden (mit file_get_contents("anotherUrl.php?hash=$encryptedString")
. Das Problem ist, manchmal enthält die Verschlüsselung einige Sonderzeichen, wie +, und dies führt dazu, dass die Entschlüsselung fehlschlägt.
Hier sind meine Verschlüsselungs- / Entschlüsselungsmethoden:
%Vor% Hier ist eine verschlüsselte Beispiel-Zeichenfolge, die ein +
enthält, und ich vermute, dass dies dazu führt, dass die Entschlüsselung fehlschlägt.
oWCrVPaS+5GbxcQFc0fulUk/zRAkDD60av4zlPiWskE=
Irgendwelche Ideen, wie ich das lösen sollte? Ich habe versucht, urlencode()
und urldecode()
auf dem Hash zu tun, aber das scheint auch die Verschlüsselung zu brechen. Gibt es eine Möglichkeit, den Verschlüsselungsalgorithmus so zu ändern, dass nur URL-sichere Zeichen zurückgegeben werden?
Sieh dir diesen Thread an:
base64-codierte Zeichenfolgen in URL übergeben
Im Wesentlichen möchten Sie DO vor dem Senden der Zeichenfolge urlencode()
, jedoch möchten Sie NICHT am anderen Ende urldecode()
.
Um dieses Problem zu lösen, benutze ich jetzt das Folgende (nach 3 Stunden Schmerzen), und es funktioniert großartig.
Fühlen Sie sich frei,
zu kopieren und einzufügen %Vor%Anstatt Base64 zum Verschlüsseln Ihrer Daten zu verwenden, können Sie auch Base32 (RFC 4648) verwenden, was URL-sicher ist es verwendet nur die Buchstaben A-Z (Groß- / Kleinschreibung nicht beachten) und die Ziffern 2-7. Es gibt bereits eine PHP-Bibliothek zum Kodieren / Dekodieren. Beachten Sie, dass Base32 ~ 20% mehr Speicherplatz benötigt als Base64.
Sie können auch URLcrypt verwenden, eine nützliche Bibliothek, die Ihnen bei der Verschlüsselung und der Codierung von Base32 hilft.
Tags und Links php url-encoding base64 encryption mcrypt