Outils pour utilisateurs

Outils du site


programmation_perl

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révisionLes deux révisions suivantes
programmation_perl [2011/07/22 15:05] thierryprogrammation_perl [2011/10/11 21:17] thierry
Ligne 8: Ligne 8:
 But: comparer et construire des clés "crypt"... But: comparer et construire des clés "crypt"...
  
 +Voila: 
 +  #!/usr/bin/perl -w 
 +   
 +  use strict; 
 +  use warnings; 
 +   
 +  { 
 +  # From package: libauthen-simple-passwd-perl 
 +  # 
 +  use Authen::Simple::Password; 
 +   
 +  # Où: 
 +  # password = mot de passe saisie (en clair) 
 +  # encrypted = le hash recupéré dans une base (ou fichier shadow ...) 
 +  # Exemple: 
 +  # encrypted format: 
 +  # $<format>$<salt>$<hash> 
 +  # $1$12345678$1234567890123456789012 
 +  # ou $6$12345678$xxxxxxxxxxxxxxx... 
 +  sub check_password 
 +  { 
 +    my ( $password , $encrypted ) = @_; 
 +    return Authen::Simple::Password->check($password,$encrypted); 
 +  } 
 +  } 
 +   
 +  # Créer de la poussiere 
 +  # 8 caracteres aléatoires 
 +   
 +  sub crypt_salt 
 +  { 
 +  my $salt = `( date +%s%N ; ps aux ) | md5sum | openssl base64`; 
 +  return substr( $salt, 0, 8 ); 
 +  } 
 +   
 +  { 
 +  # From package: libcrypt-unixcrypt-perl 
 +  # 
 +  use Crypt::UnixCrypt; 
 +   
 +  sub crypt_password 
 +  { 
 +    my ( $p , $s ) = @_; 
 +    if ( !defined( $s ) ) { 
 +      # Créer la poussiere 
 +      $s = '$6$' . crypt_salt(); 
 +    } 
 +    return crypt($p,$s); 
 +  } 
 +  } 
 +   
 +  # -------------------------------------- 
 +  # Chiffrement sha1 : $1$salt45678 
 +  # Chiffrement sha512 : $6$salt45678   (par defaut) 
 +  # 
 +  # le "salt" est créé de façon pseudo aléatoire. 
 +  # -------------------------------------- 
 +   
 +  { 
 +  # ----------------------------- 
 +  # Coder un mot de passe 
 +  # ----------------------------- 
 +   
 +  my $c_password = 'M0t2P4ss3'; 
 +  my $e_password = crypt_password( $c_password ); 
 +   
 +  print "Mot de passe en clair: $c_password\n"; 
 +  print "Devient chiffré en sha512: $e_password\n"; 
 +   
 +  # ---------------------------- 
 +  # Vérifier mot de passe 
 +  # ---------------------------- 
 +   
 +  print "Vérification du mot de passe : " ,  check_password( $c_password, $e_password ) ? 'OK':'**Erreur**' , "\n"
 +   
 +  # ---------------------------- 
 +  }
  
 ====== Random Quantum ====== ====== Random Quantum ======
programmation_perl.txt · Dernière modification : 2011/10/11 21:19 de thierry