begin process at 2012 02 05 02:13:55
  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 :6 294

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

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRER LA CLÉ D'UN CODE-BARRE EAN13 par kalou037
Source avec Zip Source avec une capture ENCODAGE UTF16 par foisse
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
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 administrateur CS

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 à tous !Je suis  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 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 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 Ajout donnée avec clé ds array [ par nicolas66 ] Salut @ tous !jvoulé juste savoir s'il était possible d'ajouter un élément avec sa clé ? Parce kon peut ajouter un élément à un array ca c facile, mé besoin d'aide sur du code [ par ASPerix ] Quelqu'un peut-il m'expliquer ce que fait le code suivant:foreach($HTTP_POST_VARS as $clé => $valeur) { if ($clé == "TxtLogin") { $Login Regex et caractères spéciaux [ par Totofweb ] BonjourJ'ai une variable, $texte. Dans celle-ci, je dois tester si elle contient [couleur=#123456] où 123465 est un nombre entier de 6 chiffres.J'ai e son aléatoire en chargement de page [ par pyranhaz ] s@lut,je cherche un script php qui pourrait gérer des sons audio en les présentant de façon aléatoire à chaque chargement de page...La plupart des for Projet aléatoire images [ par ziziboss ] Voilà je débute en PHP et j'ai envie de creer un petit projet je pense assez simple pour l'instant :J'ai une page HTML avec un tableau. Disons que dan Clé de Cryptage [ par mightteam ] Salut, Je dois crée aléatoirement une clé SHA-1 et je ne sais pas comment faire..Est-ce que qu'elqu'un peut m'aider?Merci d'avanceMsn & Mail : Technic


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 5,710 sec (3)

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