begin process at 2010 02 09 00:15:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > GÉNÉRER UNE CHAÎNE ALÉATOIRE SANS BOUCLE NI CRYPTAGE (MD5 OU AUTRE)

GÉNÉRER UNE CHAÎNE ALÉATOIRE SANS BOUCLE NI CRYPTAGE (MD5 OU AUTRE)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :clé, aléatoire, caractères, chaîne, string Niveau :Débutant Date de création :22/06/2008 Date de mise à jour :24/06/2008 11:11:58 Vu :4 037

Auteur : kylekatarnls

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Jusqu'à présent tous les générateurs de clé que j'ai trouvé utilisait une boucle ou les fonction sha1, md5...

Donc je voulais présenter une autre technique qui me semble plus simple et plus flexible pour générer des chaînes aléatoires qui utilise uniquement des fonctions de manipulation de chaînes.

Source

  • define('ALPHABET','azertyuiopqsdfghjklmwxcvbn'); //Entrez les caractères que vous voulez
  • $longueur=8;
  • $cle=substr(str_shuffle(str_repeat(ALPHABET,$longueur)),0,$longueur);
  • // str_repeat(ALPHABET,$longueur) répète l'alphabet 8 fois pour permettre à une lettre d'apparaître plusieurs fois
  • // str_shuffle(...) mélange la source de lettres
  • // substr(...,0,$longueur) prélève les 8 premiers caractères
define('ALPHABET','azertyuiopqsdfghjklmwxcvbn'); //Entrez les caractères que vous voulez
$longueur=8;
$cle=substr(str_shuffle(str_repeat(ALPHABET,$longueur)),0,$longueur);
// str_repeat(ALPHABET,$longueur) répète l'alphabet 8 fois pour permettre à une lettre d'apparaître plusieurs fois
// str_shuffle(...) mélange la source de lettres
// substr(...,0,$longueur) prélève les 8 premiers caractères

 Conclusion

PHP 4.3 est nécessaire


 Historique

24 juin 2008 11:11:58 :
Commentaires explicatifs

 Sources du même auteur

Source avec Zip Source avec une capture SELFBUILD MODIFIEZ VOTRE SITE EN UN CLIC
ELIMINER LES FAUTES DE VALIDITÉ W3C COURANTES.
MASQUER VOTRE CODE AUX ROBOTS VALIDEURS W3C

 Sources de la même categorie

Source avec Zip GÉNÉRER UN MOT DE PASS ALÉATOIRE par narkos2
UNICODE TO HTML ENTITIES par CrazyShooter
Source avec Zip DÉBUTANT : FONCTION POUR TRANSFORMER UN TEMPS EN SECONDES EN... par MonkeyIsBack
FONCTION QUI GÉNÈRE UN CODE GRÂCE À L'ORTOGRAPHE ET LA PRONO... par foofymany
Source avec Zip TRADUCTION DE FICHIERS DE LANGUE AVEC GOOGLE GTRANSLATE par madislak

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRER UN MOT DE PASS ALÉATOIRE par narkos2
Source avec Zip Source avec une capture CITATION ALÉATOIRE AU CHARGEMENT D'UNE PAGE WEB par rocky87
Source avec Zip Source avec une capture CLASSE D'EXTRACTION DES DONNÉES D'UN FICHIER INI par diglas
[PHP 5.1] CLASS STRING : NOUVEL EXEMPLE SUR LA SPL par malalam
FORMATAGE AUTOMATIQUE D'UN TEXT EN FONCTION DE MOTS CLÉES par _klesk

Commentaires et avis

Commentaire de coucou747 le 23/06/2008 05:58:57

salut

pour une chaine de n caracteres, t'as n! possibilites, ce qui est enorme, mais t'as aucune garentie de l'aleatoire de la fonction str_shuffle, contrairement aux fonctions genre unique_id ou : md5(microtime()) qui semble _beaucoup_ plus fiables, meme si leur resultat est moins joli.

Commentaire de kylekatarnls le 23/06/2008 15:46:38

Oui, ce genre de système convient plutôt à une image anti-bot ou ce genre de choses. C'est pour ça que le titre est "générer une chaîne" et pas "générer une clé".

Commentaire de aKheNathOn le 24/06/2008 00:57:04

ça serais pas un snippet ça ?

L'astuce semble sympa - quelques corrections ligne 3 : str_repeat et non str_reapeat. Il faudrait que t'expliques ton code ligne par ligne / voire fonction par fonction.

Tu définit un dico / puis une longeur.
1ére remarque :
le dico pourrais être dans une constante et la longeur un paramètre de fonction. Ca donnerais ça :

define('DICO', 'azertyuiopqsdfghjklmwxcvbn');
function genRandChar($length = 8) {
  return substr(str_shuffle(str_repeat(DICO,$length)),0,$length);
}

Tu fait un str-repeat donc tu dupliques dans une chaine ton dico N fois. Ensuite tu lui demandes de mélanger l'ensemble de la chaîne str-shuffle. Puis tu prends depuis le début jusqu'à la longeur demandée.

A mon avis c'est pas bon - t'as 20 lettres dans le dico (je simplifie), tu veux un mot de passe de 8 lettres et tu lui demandes de mélanger 160 lettres (8 * 20) pour n'en retourner que les 8 premières. Pas bon au niveau perfs - fais un tour sur les commentaires de cette page :
http://fr2.php.net/manual/fr/function.str-shuffle.php

Commentaire de kylekatarnls le 24/06/2008 11:09:02

La multiplication de l'alphabet par la longueur sert à obtenir l'équiprobabilité de chaque caractère. Ce n'est pas tout à fait exact mais au moins une lettre peut se trouver en double dans le code (ce qui fait 26 puissance 8 possibilité) alors que si on prend un seul alphabet, les lettres n'apparaissent qu'une seule fois (et on a 26! possibilité) ce qu'estimait COUCOU747 qui n'a pas du voir le str_repeat. Après c'est à l'utilisateur de juger où est son intérêt, pour la constante en effet, c'est le genre d'habitude que j'ai du mal à prendre.

Commentaire de GillesWebmaster le 30/06/2008 11:03:19

Tout ça reste théorique car vous oubliez encore l'analyse combinatoire de la fonction str_shuffle()!

Commentaire de GillesWebmaster le 30/06/2008 11:05:03 8/10

Mais bon l'idée est bonne même si la chaine ne sera jamais (théoriquement) unique; savoir sortir des chemins battus est parfois une bonne idée; encourageons cela, nous autres programmeurs bornées ;-)

Commentaire de kylekatarnls le 01/07/2008 16:59:10

Merci GillesWebmaster pour ton encouragement et je tiens à le rappeler, c'est bien une chaîne aléatoire et non une clé unique.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Vérifier la présence de caractères interdits [ par Rimb0 ] Bonjour &#224; tous !Je suis&nbsp; en train de coder une partie pour les commentaires pour mon blog perso et j'ai un peu du mal... c'est pourquoi je f format chaîne de caractères [ par mark01 ] Bonjour à tous,voiçi mon problème :J'ai une base de données PostgreSQL. Une appli php. Dans une des tables j'ai un attribut de type chaîne de caractèr extraire chaîne caractères [ par eax ] salutj'ai un petit pb de traitement de chaines de caractères :j'ai une variable avec du contenu dedans (je ne sais pas ce qu'il y a exactement dedans découpage chaîne de caractère [ par suethi75 ] Bonsoir, Je voudrais découper des chaîne de caractère dont je ne connais pas forcément la taille. Je sais juste que je dois prendre les 2 ou 3 premier je suis pommé, je comprend plus rien google map et sql help me please [ par laser45 ] Error convertoring HTML to XHTML: System.ArgumentException: The empty string '' is not a valid name. at System.Xml.XmlTextWriter.ValidateName(Strin donnees passees en POST se retrouvant avec "_" [ par bouletsensei ] bonjour.Je vais vous exposer mon probleme. J ai un formulaire, dont les donnees sont extraites d une base de donnnees (c est un systeme de sondages). Mot clé static [ par slurp ] qui pourrais m'expliquer le mot clé static, pasque moi je serais tenter de l'utiliser partout vu que pas besoin d'instancié la class.S'il vous plait u afficher une partie d'une chaine de caractere [ par stageman ] Bonjour, je souhaiterais savoir si il existe une fonction (ou un autre moyen) en php pour n'afficher qu'une partie d'une chaine.< probleme formulaire [ par laloire33150 ] Error convertoring HTML to XHTML: System.ArgumentException: The empty string '' is not a valid name. at System.Xml.XmlTextWriter.ValidateName(Strin afficher une variable avec <?= $mavar; ?> [ par karmel ] Error convertoring HTML to XHTML: System.ArgumentException: The empty string '' is not a valid name. at System.Xml.XmlTextWriter.ValidateName(Strin


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales