Python >> Tutoriel Python >  >> Python

Comment obtenir le MD5 d'une chaîne ? Un Python One-Liner

Réponse rapide :Le one-liner suivant calcule le MD5 à partir de la chaîne 'hello world' :

import hashlib as h;print(h.md5(b'hello world').hexdigest())

Contexte :résumé de message MD5 est un algorithme cryptographique vulnérable pour mapper une chaîne à une valeur de hachage de 128 bits. Vous pouvez l'utiliser comme somme de contrôle sur un texte donné pour vous assurer que le message n'a pas été corrompu. Cependant, vous ne devez pas l'utiliser comme protection contre la corruption malveillante en raison de sa vulnérabilité. Avec du matériel et des algorithmes modernes, il est facile de craquer !

Problème :Comment générer une somme MD5 à partir d'une chaîne ?

Exemple :Supposons que vous ayez la chaîne de texte suivante :

text = 'hello world'

Et vous voulez le convertir en valeur de hachage MD5 :

5eb63bbbe01eeed093cb22bb8f5acdc3

Nous discuterons ensuite de quelques méthodes pour y parvenir.

Méthode 1 :hashlib.md5() — Multi-Liner

La bibliothèque hashlib fournit une fonction md5() qui crée un objet capable de calculer pour vous la valeur de hachage d'un texte donné via la méthode update() :

# Method 1: hashlib.md5()
import hashlib

m = hashlib.md5()
text = 'hello world'
m.update(text.encode('utf-8'))

print(m.hexdigest())
# 5eb63bbbe01eeed093cb22bb8f5acdc3

Assurez-vous d'encoder la chaîne en tant que chaîne Unicode avec le string.encode('utf-8') méthode. Sinon, Python renverra une erreur.

Méthode 2 :hashlib.md5() – Trivial One-Liner

En une seule ligne, le code semble illisible :

# Method 2: One-Liner
import hashlib; m = hashlib.md5(); m.update(text.encode('utf-8'));print(m.hexdigest())
# 5eb63bbbe01eeed093cb22bb8f5acdc3

Nous avons utilisé la technique standard pour unifier les extraits de code plats sans blocs de code en retrait. Pour en savoir plus, consultez notre didacticiel associé.

Tutoriel associé : Comment One-Linerize Code ?

Méthode 3 :Une ligne améliorée

Vous pouvez légèrement améliorer le code en utilisant le b'...' chaîne au lieu du encode() fonction pour en faire une chaîne Unicode :

# Method 3: One-Liner
import hashlib as h;print(h.md5(b'hello world').hexdigest())
# 5eb63bbbe01eeed093cb22bb8f5acdc3

J'ai aussi initialisé le md5 objet avec la chaîne Unicode directement plutôt que d'utiliser le update() méthode. Le one-liner a maintenant un nombre minimum de caractères - je ne pense pas qu'il puisse être encore plus concis ! 😉

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!