Maison > Article > développement back-end > Méthodes d'opération de chiffrement et de déchiffrement Base64 en Python et différences entre les versions
Aujourd'hui, examinons l'utilisation de la fonction de chiffrement base64 et les différences entre Python2 et Python3.
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.
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
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' >>>
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' >>>
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.
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!