Python >> Tutoriel Python >  >> Python

Générateur de mot de passe Python à une ligne

Pouvez-vous le croire ? Les gens utilisent des sites Web inconnus et potentiellement dangereux pour générer leurs mots de passe aléatoires !

Cela fonctionne comme suit :un site Web génère un mot de passe "aléatoire" pour eux et ils le copient-collent et supposent qu'il s'agit d'un mot de passe sûr en raison du caractère aléatoire des caractères. Quelle faille de sécurité ! Pourquoi? Parce que le site Web pourrait stocker le mot de passe au lieu de l'oublier ou que le mot de passe pourrait être consulté par un tiers ("attaque par l'homme du milieu" ) entre vous et le serveur Web générateur de mot de passe !

Cet article vous montre comment coder votre propre générateur de mot de passe à une seule ligne Python qui génère des séquences aléatoires en toute sécurité sur votre ordinateur. Il s'agit d'un moyen sûr et fiable de générer vos mots de passe sécurisés en une seule ligne de code Python.

Alors, commençons !


Problème :Générer des mots de passe aléatoires de taille n dans une seule ligne de code Python.

Exemple :Vous pouvez créer un mot de passe d'une longueur de 10 caractères.

99b^cqho^w

Appeler votre générateur de mot de passe une autre fois peut renvoyer ce qui suit :

wn+5u1ts0l

Chaque appel suivant renvoie une séquence aléatoire de 10 caractères. De cette façon, vous pouvez créer des mots de passe aléatoires difficiles à deviner ! Et vous n'avez pas à faire confiance à un générateur de mots de passe basé sur le Web (qui peut stocker vos mots de passe générés).

Méthode 1 :Fonction de choix du module aléatoire

from random import choice; print(''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789%^*(-_=+)') for i in range(10)]))

Le code se compose des parties suivantes :

  • Vous importez le choice() fonction du random module pour accéder à un élément aléatoire d'une séquence.
  • Vous passez la chaîne 'abcdefghijklmnopqrstuvwxyz0123456789%^*(-_=+)' dedans pour obtenir un caractère aléatoire (y compris des caractères spéciaux).
  • Vous exécutez cette routine de sélection de personnage n=10 fois dans une instruction de compréhension de liste pour générer 10 caractères aléatoires.
  • Vous réunissez les n=10 caractères dans la liste générée pour créer une chaîne de 10 caractères.
  • Vous imprimez le résultat dans le shell.

Le voici :votre mot de passe nouvellement créé !

Remarque  :Comme alternative, vous pouvez également appeler ce one-liner depuis votre système d'exploitation en utilisant le -c drapeau des python commande :

$ python -c "from random import choice; print(''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789%^*(-_=+)') for i in range(10)]))"

AVERTISSEMENT :L'utilisation d'une phrase simple peut être plus sûre ! 🙂

Vous connaissez peut-être la célèbre bande dessinée Web xkcd. Voici une excellente observation sur la force des mots de passe :

Vous pouvez mesurer la force des mots de passe avec Entropy . Voici une citation pertinente de Wikipédia :

Il est courant dans l'industrie informatique de spécifier la force du mot de passe en termes d'entropie de l'information qui est mesurée en bits et est un concept de la théorie de l'information. Au lieu du nombre de suppositions nécessaires pour trouver le mot de passe avec certitude, le logarithme de base 2 de ce nombre est donné, ce qui est communément appelé le nombre de "bits d'entropie" dans un mot de passe, bien que ce ne soit pas exactement la même quantité comme entropie d'information. Un mot de passe avec une entropie de 42 bits ainsi calculé serait aussi fort qu'une chaîne de 42 bits choisie au hasard, par exemple par un tirage au sort équitable. Autrement dit, un mot de passe avec une entropie de 42 bits nécessiterait 2 42 (4 398 046 511 104) tente d'épuiser toutes les possibilités lors d'une recherche par force brute. Ainsi, en augmentant d'un bit l'entropie du mot de passe, le nombre de suppositions requises double, rendant la tâche d'un attaquant deux fois plus difficile. En moyenne, un attaquant devra essayer la moitié du nombre de mots de passe possibles avant de trouver le bon.

Méthode 2 :Randint aléatoire

Un one-liner similaire mais légèrement différent est le suivant :

import random as r; c = 'abcdefghijklmnopqrstuvwxyz0123456789%^*(-_=+)'; print(''.join([c[r.randint(0,len(c)-1)] for i in range(10)]))

L'idée est similaire mais avec une différence :vous utilisez l'indexation avec un index aléatoire sur la chaîne de caractères c pour trouver un seul caractère aléatoire. Le reste est à peu près le même.

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 !!