Heim  >  Artikel  >  Backend-Entwicklung  >  Base64-Verschlüsselungs- und Entschlüsselungsoperationsmethoden in Python und Unterschiede zwischen den Versionen

Base64-Verschlüsselungs- und Entschlüsselungsoperationsmethoden in Python und Unterschiede zwischen den Versionen

巴扎黑
巴扎黑Original
2017-08-16 13:45:391779Durchsuche

Werfen wir heute einen Blick auf die Verwendung der Base64-Verschlüsselungsfunktion und die Unterschiede zwischen Python2 und Python3.

1. base64

Base64 ist eine Darstellungsmethode für Binärdaten basierend auf 64 druckbaren Zeichen. Da 2 hoch 6 gleich 64 ist, sind alle 6 Bits eine Einheit, die einem druckbaren Zeichen entspricht. Drei Bytes haben 24 Bits, was 4 Base64-Einheiten entspricht, d. h. 3 Bytes müssen durch 4 druckbare Zeichen dargestellt werden. Es kann als Übertragungskodierung für E-Mails verwendet werden. Zu den druckbaren Zeichen in Base64 gehören die Buchstaben A–Z, a–z und die Zahlen 0–9, sodass insgesamt 62 Zeichen vorhanden sind. Die anderen beiden druckbaren Symbole variieren je nach System. Die codierten Daten sind etwas länger als die Originaldaten, 4/3 des Originals.

Base64 wird häufig zur Darstellung, Übertragung und Speicherung einiger Binärdaten (oder nicht druckbarer Zeichenfolgen) in Situationen verwendet, in denen normalerweise Textdaten verarbeitet werden. Einschließlich MIME-E-Mail, E-Mail über MIME, Speicherung komplexer Daten in XML

Verwendung in E-Mails:

In E-Mails im MIME-Format kann Base64 zum Konvertieren von Binärzeichen verwendet werden. Abschnittssequenzdaten werden in Text codiert bestehend aus einer Folge von ASCII-Zeichen. Geben Sie bei Verwendung base64 in der Übertragungscodierungsmethode an. Die verwendeten Zeichen umfassen 26 Groß- und Kleinbuchstaben, plus 10 Zahlen, Pluszeichen „+“, Schrägstrich „/“, insgesamt 64 Zeichen, und das Gleichheitszeichen „=" wird als Suffix verwendet.

Verwendung in URL:

Standard Base64 ist nicht für die Übertragung direkt in der URL geeignet, da der URL-Encoder die Zeichen „/“ und „+“ im Standard Base64 in das Formular umwandelt von „%XX“ müssen diese „%“-Zeichen beim Speichern in der Datenbank konvertiert werden, da das „%“-Zeichen in ANSI SQL als Platzhalterzeichen verwendet wurde.

Um dieses Problem zu lösen, kann eine verbesserte Base64-Kodierung für URLs verwendet werden, die das „=“-Zeichen am Ende nicht ausfüllt und das „+“ und „/“ im Standard-Base64 in „ *“ ändert. „ und „-“ eliminiert die Notwendigkeit einer Konvertierung während der URL-Kodierung, -Dekodierung und Datenbankspeicherung, vermeidet die Verlängerung der kodierten Informationen im Prozess und vereinheitlicht das Format von Objektkennungen in Datenbanken, Formularen usw. .

Es gibt auch eine verbesserte Base64-Variante für reguläre Ausdrücke, die „+“ und „/“ in „!“ und „-“ ändert, da „+“ und „*“ in regulären Ausdrücken verwendet werden. Alle Formeln dürfen haben besondere Bedeutungen.

2. Verwendung in Python

Python2 und Python3 unterscheiden sich in der Base64-Verarbeitung. Die unter Python3 übergebenen Parameter können keine Unicode-Strings sein und müssen konvertiert werden

Python2 :

Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> str = 'pythontab.com'
>>> base64.b64encode(str)
'cHl0aG9udGFiLmNvbQ=='
>>> base64.b64decode('cHl0aG9udGFiLmNvbQ==')
'pythontab.com'
>>>

Python3:

Python 3.5.2 (default, Aug 24 2016, 16:48:29) 
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> str = 'pythontab.com'
>>> bytesStr = str.encode(encoding='utf-8')
>>> bytesStr.decode()
'pythontab.com'
>>> b64str = base64.b64encode(bytesStr)
>>> b64str
b'cHl0aG9udGFiLmNvbQ=='
>>> base64.b64decode(b64str)
b'pythontab.com'
>>>

Hinweis:

Zunächst ist es notwendig, diese Zeichenfolgen zu verstehen sind in Python Die interne Darstellung ist Unicode-Codierung

Daher ist es bei der Codierungskonvertierung normalerweise erforderlich, Unicode als Zwischencodierung zu verwenden, dh zuerst andere codierte Zeichenfolgen in Unicode zu decodieren und sie dann zu codieren von Unicode ) in eine andere Kodierung.

Die Funktion von decode besteht darin, andere codierte Zeichenfolgen in Unicode-Codierung umzuwandeln.

Str1.decode('gb2312') bedeutet beispielsweise, dass gb2312-codierte Zeichenfolgen in Unicode-Codierung konvertiert werden. Die Funktion von

encode besteht darin, die Unicode-Codierung in Zeichenfolgen anderer Codierungen umzuwandeln,

wie str2.encode('gb2312'), was bedeutet, dass Unicode-Codierungszeichenfolgen in gb2312-Codierung konvertiert werden.

3. Andere Methoden

base64.b64encode(s[, altchars])

base64.b64decode(s[, altchars])

altchars An optionaler Parameter, eine Zeichenfolge mit zwei Längen, die zum Ersetzen von + und / verwendet wird.

base64.urlsafe_b64encode(s)

base64.urlsafe_b64decode(s)

In dieser Methode wird - anstelle von + und _ anstelle von / verwendet stellt sicher, dass nach der Codierung normal auf die Zeichenfolge zugegriffen werden kann, wenn sie in der URL

base64.b32encode(s)

base64.b32decode(s[, casefold[, map01]])

platziert wird

base64.b16encode(s)

base64.b16decode(s[, casefold])

Das obige ist der detaillierte Inhalt vonBase64-Verschlüsselungs- und Entschlüsselungsoperationsmethoden in Python und Unterschiede zwischen den Versionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn