Wie macht man codieren und decodieren einer Zeichenfolge mit Python für die Verwendung in einer URL?
Ich habe einen string wie diesen:
String A: [ 12234_1_Hello'World_34433_22acb_4554344_accCC44 ]
Ich würde gerne verschlüsselt Ein String verwendet werden, in eine saubere URL. so etwas wie dieses:
String B: [ cYdfkeYss4543423sdfHsaaZ ]
Ist es ein encode-API in python gegebene Zeichenkette Ein, es gibt String-B?
Gibt es eine decode API in python, gegeben, String B, es gibt Ein String?
Bitte beachten Sie, dass die Verschlüsselung ("ich möchte verschlüsseln...") ist nicht die Codierung ("Ist es ein encode-API..."). Sie akzeptiert die Antwort, die base64-Codierung verwendet. Dies ist keine Verschlüsselung, D. H. die Daten sind nicht sicher.
ein verschlüsseltes query-string und eine "saubere" URL nicht die gleiche Sorge. Wenn überhaupt, dann ein verschlüsseltes query-string ist von Natur aus nicht sauber. So wie es da steht, die Frage ist sehr schlecht formuliert.
ein verschlüsseltes query-string und eine "saubere" URL nicht die gleiche Sorge. Wenn überhaupt, dann ein verschlüsseltes query-string ist von Natur aus nicht sauber. So wie es da steht, die Frage ist sehr schlecht formuliert.
InformationsquelleAutor un33k | 2009-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Weise zu tun, das codieren/decodieren, ist die Verwendung der base64-Paket, ein Beispiel:
Ist es, was Sie gesucht haben? Mit Ihren speziellen Fall erhalten Sie:
Eingang: 12234_1_Hello'World_34433_22acb_4554344_accCC44
codiert: MTIyMzRfMV9IZWxsbydXb3JsZF8zNDQzm18ymmfjyl80ntu0mzq0x2fjy0ndndq=
entschlüsselt: 12234_1_Hello'World_34433_22acb_4554344_accCC44
InformationsquelleAutor Daniel Wedlund
beachten Sie, dass theres einen großen Unterschied zwischen Kodierung und Verschlüsselung.
wenn Sie möchten, schicken Sie sensible Daten, dann verwenden Sie nicht die Kodierung oben erwähnt 😉
InformationsquelleAutor
Sind Sie nach der Verschlüsselung, Komprimierung, oder einfach nur urlencoding? Die Zeichenfolge übergeben werden kann, nach urlencoding, aber das wird nicht kleiner machen, wie in Ihrem Beispiel. Kompression schrumpfen könnte, aber Sie würden noch brauchen, um urlencode das Ergebnis.
Braucht man eigentlich zu verbergen, die string-Daten aus dem viewer (z.B. sensible Daten, sollten Sie nicht sichtbar sein jemand liest die URL über die Schulter)?
Könnten Sie verkennen die Speicherung von Daten mit verweisen. Das ist die kurze Zeichenfolge, die Sie sehen in der URL ist tatsächlich eine session-ID und die Daten, auf die Sie verweist, wird auf dem server gespeichert. Ich könnte falsch sein, ich kenne keine Einzelheiten über diese Website, aber es ist Häufig genug.
InformationsquelleAutor JimG
Machen es wirklich kurz -> legen Sie einfach eine Zeile in die Datenbank ein. Speichern etwas wie eine Liste von
(id auto_increment, url)
Tupel. Dann können Siebase64
die id-Codierung zu bekommen, eine "proxy-url". Decodieren durch das decodieren der id und auf der Suche nach der richtigen url in der Datenbank. Oder wenn Sie nichts dagegen haben die Bezeichner der Suche sequentiell, verwenden Sie einfach die zahlen.InformationsquelleAutor viraptor
Sind Sie auf der Suche zum verschlüsseln der Zeichenfolge oder codieren Sie es zu entfernen ungültige Zeichen für urls?
Wenn letzteres, können Sie mit
das urllib.Zitat
:InformationsquelleAutor dF.
Den base64-Modul bietet die Kodierung und Dekodierung in einer Zeichenfolge zu und von verschiedenen Basen, seit python 2.4.
In Sie Beispiel würden Sie Folgendes tun:
Für full-API:
http://docs.python.org/library/base64.html
TypeError: 'str' does not support the buffer interface
Mein string:
A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|Adj|Adm|Adv|Asst|Bart|Bldg|Brig|Bros|Capt|Cmdr|Col|Comdr|Con|Corp|Cpl|DR|Dr|Drs|Ens|Gen|Gov|Hon|Hr|Hosp|Insp|Lt|MM|MR|MRS|MS|Maj|Messrs|Mlle|Mme|Mr|Mrs|Ms|Msgr|Op|Ord|Pfc|Ph|Prof|Pvt|Rep|Reps|Res|Rev|Rt|Sen|Sens|Sfc|Sgt|Sr|St|Supt|Surg|v|vs|i.e|rev|e.g|No #NUMERIC_ONLY#|Nos|Art #NUMERIC_ONLY#|Nr|pp #NUMERIC_ONLY#|Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Oct|Nov|Dec
InformationsquelleAutor Brian Ramsay
Es ist schwer, die Größe zu reduzieren, die eine Zeichenfolge und bewahren beliebigem Inhalt.
Haben Sie zum einschränken der Daten, um etwas sinnvoll zu komprimieren.
Ihre alternative ist das folgende zu tun.
Speichern "werden alle Argumente in der URL" in eine Datenbank Zeile.
Zuweisen einer GUID-Schlüssel, um diese Sammlung von Argumenten.
Dann vorsehen, dass die verkürzte GUID-Schlüssel.
Extra-bezogen auf was? Wenn Sie die Authentifizierung von Benutzern und die überprüfung der Autorisierung Anfragen gibt. Wenn Sie Ihre Daten-Modell ist etwas andere als eine triviale Tabelle kann es mit mehr als einer Abfrage. Speichern Sie die "Abfrage" in die Datenbank relativ einfach zu handhaben.
InformationsquelleAutor S.Lott
Weitere Methode wäre auch, verkürzen die Schnur wäre, die zum berechnen der md5 - /sha1-hash der Zeichenkette (verbunden mit einem Samen, wenn gewünscht):
In der Theorie sollten Sie sich einen Satz Saiten mit sehr wenigen Kollisionen und mit einer festen Länge. Die
hashlib
Bibliothek hat eine Reihe von verschiedenen hash-Funktionen, die Sie verwenden können, auf diese Weise, mit verschiedenen Leistungsgrößen.Edit: Sie sagte auch, dass Sie benötigt eine reversible string, so würde dies nicht funktionieren. Afaik, jedoch viele web-Plattformen, saubere URLs, wie Sie scheinen zu wollen, zu implementieren, die Verwendung von hash-Funktionen zu berechnen, die eine verkürzte URL, und speichern Sie dann die URL zusammen mit der Seite, die anderen Daten, um die reverse-lookup-Funktion.
hashlib.sha1
reversibel?InformationsquelleAutor chradcliffe