begin process at 2012 05 27 19:47:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPTAGE REVERSIBLE

CRYPTAGE REVERSIBLE


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Classé sous :cryptage, reversible, tableau, aleatoire Niveau :Initié Date de création :05/07/2011 Date de mise à jour :05/07/2011 16:43:09 Vu / téléchargé :2 904 / 147

Auteur : Mokost

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

 Description

Je vous propose une classe que j'ai crée il y a un moment pour crypter des mots de passe. Le but est de générer des chaines pseudo aléatoire qui une fois décodé redonne toute le même mot de passe. Je l'ai mise à jour et améliorée cette semaine. En principe un algorithme de cryptage ne doit pas être partagé mais je me suis dit que cela pourrait vous donner des idées pour en en faire. Et puis vu que ce script utilise des tableau de valeur, à partir du moment ou personne n'a les vôtre, il ne pourra rien faire.

En outre allez à l'adresse : http://ragnarok.gaming.cx/ccodage/table_generator. php pour générer une nouvelle fonction SetTable(fonction statique de la classe crypter) avec de nouveau tableau.

Source

  • include_once("crypter.class.php");
  • $crypt = new Crypter(false,15,6);
  • $ca=array();
  • for($i=0;$i<20;$i++)
  • {
  • $cc = "php";
  • $cu = $crypt->Encode($cc);
  • $ca[] = $cu;
  • echo $cc.' => '.$cu.'<br/>';
  • }
  • echo '<br/>';
  • for($i=0;$i<20;$i++)
  • {
  • if(($cc = $crypt->Decode($ca[$i]))==false) $cc='erreur de la source';
  • echo $ca[$i].' => '.$cc.'<br/>';
  • }
  • sortie :
  • //encodage
  • php => EFgsch5gG5ILEZ9b
  • php => EzZfrr4mGMjg9YwjNn
  • php => vZVMHv3ZG0oPOQeRp
  • php => NJMlMVeKGELkZ5ub
  • php => Erl4AqoFGO7uT9Uv
  • php => NpEk25NqGbAujj3NS
  • php => EvTeRt8gGTxwc9bZ
  • php => NkRuyIXLG0iFEdnN
  • php => NSMy4PYQGEv4Q07p
  • php => ZmLovNXlGgVuYggyf
  • php => KR9DZsNbGT15KKko
  • php => vmybNvEzGFEmFFBz
  • php => Z1zMpQn3GJwmHH0s
  • php => ZbzV5OnuGQw6ivvbV
  • php => ErlWQwu3GgK0hUP6O
  • php => EblNhE4fGgRuggsE
  • php => ZOiOg0R4Glekllb6
  • php => veyiFvEJGTJJ9cpZ
  • php => EUlc7DMTGlecllv6
  • php => NIRCsOAuGg5bggqf
  • //décodage;
  • EFgsch5gG5ILEZ9b => php
  • EzZfrr4mGMjg9YwjNn => php
  • vZVMHv3ZG0oPOQeRp => php
  • NJMlMVeKGELkZ5ub => php
  • Erl4AqoFGO7uT9Uv => php
  • NpEk25NqGbAujj3NS => php
  • EvTeRt8gGTxwc9bZ => php
  • NkRuyIXLG0iFEdnN => php
  • NSMy4PYQGEv4Q07p => php
  • ZmLovNXlGgVuYggyf => php
  • KR9DZsNbGT15KKko => php
  • vmybNvEzGFEmFFBz => php
  • Z1zMpQn3GJwmHH0s => php
  • ZbzV5OnuGQw6ivvbV => php
  • ErlWQwu3GgK0hUP6O => php
  • EblNhE4fGgRuggsE => php
  • ZOiOg0R4Glekllb6 => php
  • veyiFvEJGTJJ9cpZ => php
  • EUlc7DMTGlecllv6 => php
  • NIRCsOAuGg5bggqf => php
include_once("crypter.class.php");
$crypt = new Crypter(false,15,6);
$ca=array();
for($i=0;$i<20;$i++)
{
	$cc = "php";
	$cu = $crypt->Encode($cc);
	$ca[] = $cu;
	echo $cc.' => '.$cu.'<br/>';
}
echo '<br/>';
for($i=0;$i<20;$i++)
{
	if(($cc = $crypt->Decode($ca[$i]))==false) $cc='erreur de la source';	
	echo $ca[$i].' => '.$cc.'<br/>';
}

sortie :

//encodage
php => EFgsch5gG5ILEZ9b
php => EzZfrr4mGMjg9YwjNn
php => vZVMHv3ZG0oPOQeRp
php => NJMlMVeKGELkZ5ub
php => Erl4AqoFGO7uT9Uv
php => NpEk25NqGbAujj3NS
php => EvTeRt8gGTxwc9bZ
php => NkRuyIXLG0iFEdnN
php => NSMy4PYQGEv4Q07p
php => ZmLovNXlGgVuYggyf
php => KR9DZsNbGT15KKko
php => vmybNvEzGFEmFFBz
php => Z1zMpQn3GJwmHH0s
php => ZbzV5OnuGQw6ivvbV
php => ErlWQwu3GgK0hUP6O
php => EblNhE4fGgRuggsE
php => ZOiOg0R4Glekllb6
php => veyiFvEJGTJJ9cpZ
php => EUlc7DMTGlecllv6
php => NIRCsOAuGg5bggqf

//décodage;
EFgsch5gG5ILEZ9b => php
EzZfrr4mGMjg9YwjNn => php
vZVMHv3ZG0oPOQeRp => php
NJMlMVeKGELkZ5ub => php
Erl4AqoFGO7uT9Uv => php
NpEk25NqGbAujj3NS => php
EvTeRt8gGTxwc9bZ => php
NkRuyIXLG0iFEdnN => php
NSMy4PYQGEv4Q07p => php
ZmLovNXlGgVuYggyf => php
KR9DZsNbGT15KKko => php
vmybNvEzGFEmFFBz => php
Z1zMpQn3GJwmHH0s => php
ZbzV5OnuGQw6ivvbV => php
ErlWQwu3GgK0hUP6O => php
EblNhE4fGgRuggsE => php
ZOiOg0R4Glekllb6 => php
veyiFvEJGTJJ9cpZ => php
EUlc7DMTGlecllv6 => php
NIRCsOAuGg5bggqf => php

 Conclusion

J&#8217;espère qu'elle vous sera utile de par sa réversibilité. La taille de la chaine de sortie est assez conséquente c'est pour cela qu'il vaut mieux l&#8217;utiliser pour les mots de passe ou pour transmettre des ID par Get(ex: www.unsite.fr/?article=6H9GF8LFFdK). Rien ne vous empêche d'encoder un texte mais gare à la taille.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

05 juillet 2011 16:38:58 :
Toutes les propriétés inutile au public transformé en private.
05 juillet 2011 16:43:09 :
modifications mineures

 Sources de la même categorie

Source avec Zip Source avec une capture CAPTCHA AJAX ANTI-BOT par darkvador59
Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien
CRYPTAGE/DECRYPTAGE MCRYPT par sephirothgeek

 Sources en rapport avec celle ci

CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
CRYPTAGE/DECRYPTAGE MCRYPT par sephirothgeek
Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM

Commentaires et avis

Commentaire de stay le 05/07/2011 15:45:14

Salut @Mokost,
Merci pour cet exemple de code.
Mais il y a quelques erreurs.

Dans la méthode getRandTable, tu n'as pas initialisé la variable $r;
Donc, Notice: Undefined variable $r, deux fois sur la ligne du while et une fois dans le return.
De plus, la condition de ton while ne pouvait fonctionner correctement car, tu n'avais pas mis d'accolade {}.
Donc, que $r était ou pas égal à $avoid et $avoid2, c'était toujours égal.

J'ai réécrit la méthode comme ceci :

private function getRandTable($avoid=-1,$avoid2=-1)
{
    if (! isset($r)) $r = null;

    while($r==$avoid || $r==$avoid2)  {
        $r = rand(0,$this->MaxTable);
    }

    return $r;
}

Pour la suite, tout va bien mais :),
Tu as écrit ce code en objet, mais on voit que tu ne la maîtrises pas totalement.
Exemple, dans le constructeur, tu vérifies que $blocksize en paramètre est <0 || >6.
Cette sécurité ne sert à rien car, $BlockSize est public et donc, si je fais ceci :
$crypt = new Crypter(false,15,6);
$crypt->BlockSize = 7;
:), ta condition ne sert à rien.

Ce qui est perturbant à la lecture de ton code, c'est que tu as codé en objet mais par moitié php4 et php5.
Pareil, la nomenclature des fonctions et des variables doit toujours commencer par une minuscule.

Et pour finir tu devrais commenter toutes tes fonctions comme proposé sur phpDocumentor :
http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.pkg.html

Commentaire de stay le 05/07/2011 15:57:55

J'ai fait une petite erreur le while sans les accolades {}, c'était bon :)

Commentaire de coucou747 le 06/07/2011 14:39:03 administrateur CS

Bonjour, quand tu dis :
"En principe un algorithme de cryptage ne doit pas être partagé"

c'est faux, la sécurité d'un algo de cryptage ne doit pas dépendre d'un secret sur l'algo, mais de la taille de la clée de cryptage.

Commentaire de Mokost le 07/07/2011 19:28:54

Ne sommes nous pas d'accord que si tu partage ton algorithme tu perds en sécurité ? Puisque tu décris la façon dont il fonctionne. Bien sûr comme je l'ai dit s'il n'a pas les mêmes tableau que toi il n'aura jamais le bon résultat mais il n'empêche que le pirate potentiel sait comment le cryptage fonctionne.

Commentaire de destinyfr le 07/07/2011 23:50:13

Je n'ai pas encore eu le temps de trop regarder la source, je reprendrai seulement les commentaires du dessus.

Le pirate sait certes comment fonctionne ton algo, mais c'est pas pour autant qu'il arrivera à le casser. Par exemple, l'algorithme RSA est bien connu, seulement quand tu tapes sur des nombres premiers assez grands, tu as plus personne qui est capable de le casser.

Tu as testé un grand nombre de combinaisons pour savoir s'il y a deux fois la même sortie pour deux entrées différentes ?

Commentaire de Neo_Ryu le 11/07/2011 14:56:10

Bonjour, déjà merci de partager ta source Mokost ! ^^
Je viens de voir ta source et n'ai pas le temps en ce moment de faire tout des tests pour en connaître sa sécurité (je vois que tu te base sur du MD5 et une table, as tu vérifier aussi que l'analyse fréquentielle d'un long texte n'indique rien ?), mais quoi qu'il en soit, c'est grâce au partage des uns et des autres que de nouvelles idées peuvent germer ! En cela ta source est donc forcément intéressante et peu aider, des débutants en cryptographie par exemple, à mettre au point leur algorithme ! ^^

Je vois que coucou747 accours toujours aussi vite quand un script fait mention de cryptage dans le titre lol ^^ Certes la clé de cryptage est une chose essentielle pour la sécurité, mais n'oublions pas que sans algo derrière, la tache est bien plus ardue pour en deviner le calcul (pas impossible certes, mais tout le monde n'est pas expert en cryptographie ou codage ;) ). Et puis ca me rappel ce petit débat que tu avais eu il y a quelques temps sur une source qui ce disais indéchiffrable (de souvenir c'était encapsulé en 3 parties). ;)

Commentaire de LeFauve42 le 12/07/2011 11:08:00

Effectivement, la securite basee sur "un algo de cryptage secret" est tres anecdotique...
C'est tout au plus bon si tu veux cacher des trucs a ta petite soeur, mais aucune agence de securite gouvernementale ne sera stoppee plus de quelques heures (dans le meilleur des cas) avec ce genre d'approche.

Il vaut mieux utiliser un algo connu dont la complexite peut etre demontree mathematiquement.

De plus, pour un mot de passe, il vaut mieux utiliser un algo de Hash non reversible.

Commentaire de coucou747 le 05/08/2011 10:41:15 administrateur CS

En pratique, la sécurité en crypto, ça passe par des phrases de tests et d'études, le secret ne suffit pas.

Parfois, la complexité des problèmes de cryptanalyse ne sont pas connus (ou pas prouvés) mais vu le nombre de scientifiques qui bossent sur ces themes, on peut quand meme avoir confiance.

C'est connu, il vous suffit de chercher un livre de théorie des codes pour le voir.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[ URGENT] prob tableau aleatoire [URGENT] [ par bsketeur ] bonjour a tous j'ai un gros problemeje doit faire un tableau avec la function rand.je vous ecrie le sujet de mon exercicevous dever faire un tableau d Fonction aléatoire sur tableaux [ par asdr ] Bonjour, Je travail en ce moment sur une fonction permettant de choisir 2 nombres aléatoirement dans un tableau de valeurs définies, sachant que le d Problème lors du remplacement des frames par des includes [ par GarnierFlorian ] Salut à tous ! Tout d'abord, voici le principe : il s'agit d'un espace perso, autrement dit un utilisateur sur un site avec un compte perso et des fo Affichage permanent de la première ligne d'un tableau en PHP [ par Dalaran2011 ] Bonjour, J'affiche des données dans un tableau (récupérées dans une base de donnée). J'ai noté les noms des colonnes en tête de mon tableau. Quand je mysql_fetch pour un tableau multi dimmensionel [ par fabienfs ] Hello, On sait que : mysql_fetch_assoc : Lit une ligne de résultat MySQL dans un tableau associatif mysql_fetch_row : Retourne une ligne de résultat tableau [ par nbpro ] j'ai une chaine de caractère qui récupère des données dans un texte. j'aimerai savoir comment envoyée les donné dans un table sql . en faisant faire fonction mcrypt bug - Comment avoir un cryptage PHP réversible et sur? [ par zzzzzz ] Bonjour, J'ai trouvé 2 fonctions pour chiffrer du texte sur php.net (utilisant mcrypt) : function Crypter($str, $key) { # Add PKCS7 padding. diviser tableau en plusieurs pages [ par profiter ] bonsoir dans une page web, je charge les informations sur les livres dans un tableau alors ca marche mais je veux que lorsque le nbre de livre depass Mur d'image aléatoire [ par seyvapul ] Bonjour à tous. Je souhaite faire sur ma page de garde, un mur d'images (Tableau 3l 5c, les miniatures font 95x95) qui changent de manière aléatoires Graphe sous php [ par attouta ] Bonjour, Je suis entrains de récupérer des données d'un fichier .csv et de les afficher sous forme d'un tableau sous PHP. Maintenant je veux dessiner


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,608 sec (3)

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