Python: base64.b64decode() vs .decodieren?
Den Code Furien verwandelt haben Ihre unheilvolle, starrt nach mir, und es fiel mir zur Umsetzung der "Secure Transport" im Sinne von Die Direkten Projekt. Ob oder nicht wir intern DNS anstatt LDAP für den Austausch von Zertifikaten, ich bin offensichtlich noch zu den ehemaligen zu testen, gegen, und das ist, was bekam me stecken. Offenbar ein X509-cert braucht einige massieren zu verwendet werden, in einem CERT-Rekord, und ich bin versucht, herauszufinden, wie ' s gemacht wird.
Das deutlichste, was ich gefunden habe ist ein script auf Videntity s blog, aber nicht bewandert in python, ich bin der Kollision mit einem Hindernis. Insbesondere diese Zeile abstürzt:
decoded_clean_pk = clean_pk.decode('base64', strict)
da scheint es nicht zu mögen (oder vielmehr wissen), was auch immer 'strenge' darstellen soll. Ich mache die semi-Vermutung zu, dass die Linie soll zum decodieren des base64-Daten, aber ich habe gelernt aus dem Debian-OpenSSL-Debakel einige Jahre zurück, dass blind diddling mit crypto-code ist eine Schlechte Sache(TM).
Also Wende ich mich der illustren python wonks auf SO zu Fragen, ob diese Zeile ersetzt werden könnten durch diese (mit der entsprechenden import Hinzugefügt):
decoded_clean_pk = base64.b64decode(clean_pk)
Läuft das script nach dem ändern, und produziert korrekte aussehende Ausgang, aber ich habe genug Instinkt, um zu wissen, dass ich nicht unbedingt vertraue meinen Instinkten hier. 🙂
InformationsquelleAutor GeminiDomino | 2013-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Zeile sollte schon funktionieren, wenn Sie haben, würde so aufgerufen:
Beachten Sie, dass
strict
hat einestring
, sonst python-interpreter versuchen würde, zu suchen Sie für eine variable namensstrict
und wenn Sie es nicht finden, oder sonst einen anderen Wert als:strict
,ignore
, undreplace
werden es wahrscheinlich würde haben sich darüber beklagen.Werfen Sie einen Blick auf diese code:
Beide
decode
undb64decode
funktioniert auf die gleiche, wenn.decode
übergeben, diebase64
argument-string.Der Unterschied ist, dass
str.decode
nehmen Sie eine Zeichenfolge von bytes als Argumente und gibt es Unicode-Darstellung je nachencoding
argument übergeben Sie als ersten parameter. In diesem Fall, sagen Sie es handhabenbas64
string, so wird Sie es tun ok.Ihre Frage zu beantworten, beide Werke die gleichen sind, auch wenn
b64decode/encode
gemeint sind, arbeiten nur mit base64-Codierungen und -str.decode
verarbeiten kann, wie viele Codierungen, wie die Bibliothek bewusst ist.Für weitere Informationen werfen Sie einen read auf die beiden doc Abschnitte:
decode
undb64decode
.UPDATE: Tatsächlich, und dies ist das wichtigste Beispiel ist glaube ich 🙂 werfen Sie einen Blick auf den Quellcode für
encodings/base64_codec.py
ist, dassdecode()
verwendet:Wie Sie sehen können, nutzt man eigentlich
base64
Modul, um es zu tun 🙂Hoffen, dass diese Klärung in irgendeiner Weise deine Frage.
InformationsquelleAutor Paulo Bu