Méthodes d'opération de chiffrement et de déchiffrement Base64 en Python et différences entre les versions

巴扎黑
Libérer: 2017-08-16 13:45:39
original
1797 Les gens l'ont consulté

Aujourd'hui, examinons l'utilisation de la fonction de chiffrement base64 et les différences entre Python2 et Python3.

1. base64

Base64 est une méthode de représentation de données binaires basée sur 64 caractères imprimables. Puisque la puissance 2 à la puissance 6 est égale à 64, tous les 6 bits sont une unité correspondant à un caractère imprimable. Trois octets ont 24 bits, correspondant à 4 unités Base64, c'est-à-dire que 3 octets doivent être représentés par 4 caractères imprimables. Il peut être utilisé comme codage de transfert pour le courrier électronique. Les caractères imprimables en Base64 incluent les lettres A-Z, a-z et les chiffres 0-9, il y a donc 62 caractères au total. Les deux autres symboles imprimables sont différents selon les systèmes. Les données codées sont légèrement plus longues que les données originales, soit 4/3 de l'original.

Base64 est souvent utilisé pour représenter, transmettre et stocker certaines données binaires (ou chaînes non imprimables) dans des situations où les données texte sont généralement traitées. Y compris les e-mails MIME, les e-mails via MIME, le stockage de données complexes au format XML

Utilisation dans les e-mails :

Dans les e-mails au format MIME, base64 peut être utilisé pour convertir des caractères binaires. Les données de séquence de sections sont codées en texte. constitué d'une séquence de caractères ASCII. Lorsqu'il est utilisé, spécifiez base64 dans la méthode de codage de transfert. Les caractères utilisés comprennent 26 lettres majuscules et minuscules, plus 10 chiffres, le signe plus "+", la barre oblique "/", un total de 64 caractères et le signe égal "=" est utilisé comme suffixe.

Utilisation dans l'URL :

Le Base64 standard ne convient pas à la transmission directement dans l'URL, car l'encodeur d'URL modifiera les caractères "/" et "+" du Base64 standard en Sous la forme de "%XX", ces signes "%" doivent être convertis lorsqu'ils sont stockés dans la base de données, car le signe "%" a été utilisé comme caractère générique dans ANSI SQL.

Pour résoudre ce problème, un encodage Base64 amélioré pour les URL peut être utilisé, qui ne remplit pas le signe '=' à la fin et modifie le "+" et "/" dans le Base64 standard en " *" et "-", cela élimine le besoin de conversion lors du codage, du décodage et du stockage de la base de données de l'URL, évite l'augmentation de la longueur des informations codées au cours du processus et unifie le format des identifiants d'objet dans les bases de données, les formulaires, etc.

Il existe également une variante Base64 améliorée pour les expressions régulières, qui remplace "+" et "/" par "!" et "-" car "+" et "*" sont utilisés dans les expressions régulières. Toutes les formules peuvent ont des significations particulières.

2. Utilisation en python

Python2 et Python3 sont différents dans le traitement base64. Les paramètres transmis sous Python3 ne peuvent pas être des chaînes Unicode et doivent être convertis

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'
>>>
Copier après la connexion

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'
>>>
Copier après la connexion

Remarque :

Tout d'abord, il faut comprendre que les chaînes sont en Python La représentation interne est un codage Unicode.

Par conséquent, lors de la conversion d'encodage, il est généralement nécessaire d'utiliser Unicode comme codage intermédiaire, c'est-à-dire de décoder d'abord les autres chaînes codées en Unicode, puis de les encoder. depuis Unicode ) dans un autre encodage.

La fonction du décodage est de convertir d'autres chaînes codées en codage Unicode.

Par exemple, str1.decode('gb2312') signifie convertir les chaînes codées gb2312 en codage Unicode. La fonction de

encode est de convertir le codage Unicode en chaînes d'autres codages,

tels que str2.encode('gb2312'), ce qui signifie convertir les chaînes de codage Unicode en codage gb2312.

3. Autres méthodes

base64.b64encode(s[, altchars])

base64.b64decode(s[, altchars])

altchars An paramètre facultatif, une chaîne de deux longueurs utilisée pour remplacer + et /.

base64.urlsafe_b64encode(s)

base64.urlsafe_b64decode(s)

Dans cette méthode, - est utilisé à la place de +, et _ est utilisé à la place de /, ce qui garantit qu'après l'encodage, la chaîne est accessible normalement lorsqu'elle est placée dans l'URL

base64.b32encode(s)

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

base64.b16encode(s)

base64.b16decode(s[, casefold])

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!