4/5 (16 avis)
Snippet vu 16 059 fois - Téléchargée 34 fois
-- formulaire pour insérer le texte à crypter <HTML><TITLE>CRYPTAGE SYMETRIQUE</TITLE> <BODY bgcolor=#ccddee> Seuls les caractères suivants sont acceptés: <B>ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@</B><BR /> <FORM action="hex2.php" method="post"> <textarea name="texte" rows="20" cols="40"></textarea> <input type="submit" name="valider" value="Valider"> </form> </BODY></HTML> -- fichier hex2.php pour crypter/décrypter <?php // Entrées de la fonction convert_dec: le message et le tableau // qui retournera les positions dans l'alphabet function convert_dec($msg,&$dec){ $size = strlen($msg); $lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@"; for ($i=0;$i<$size;$i++){ switch(substr($msg,$i,1)){ case 'A': $dec[$i] = 0; break; case 'B': $dec[$i] = 1; break; case 'C': $dec[$i] = 2; break; case 'D': $dec[$i] = 3; break; case 'E': $dec[$i] = 4; break; case 'F': $dec[$i] = 5; break; case 'G': $dec[$i] = 6; break; case 'H': $dec[$i] = 7; break; case 'I': $dec[$i] = 8; break; case 'J': $dec[$i] = 9; break; case 'K': $dec[$i] =10; break; case 'L': $dec[$i] =11; break; case 'M': $dec[$i] =12; break; case 'N': $dec[$i] =13; break; case 'O': $dec[$i] =14; break; case 'P': $dec[$i] =15; break; case 'Q': $dec[$i] =16; break; case 'R': $dec[$i] =17; break; case 'S': $dec[$i] =18; break; case 'T': $dec[$i] =19; break; case 'U': $dec[$i] =20; break; case 'V': $dec[$i] =21; break; case 'W': $dec[$i] =22; break; case 'X': $dec[$i] =23; break; case 'Y': $dec[$i] =24; break; case 'Z': $dec[$i] =25; break; case ' ': $dec[$i] =26; break; case '.': $dec[$i] =27; break; case ',': $dec[$i] =28; break; case ';': $dec[$i] =29; break; case '-': $dec[$i] =30; break; case '@': $dec[$i] =31; break; } } } // Entrées de la fonction convert_str: le tableau des positions dans l'alphabet, // la taille du string et le string en retour function convert_str($tab,$size,&$str){ $str = ""; for ($i=0;$i<$size;$i++){ switch($tab[$i]){ case '0' : $str .="A"; break; case '1' : $str .="B"; break; case '2' : $str .="C"; break; case '3' : $str .="D"; break; case '4' : $str .="E"; break; case '5' : $str .="F"; break; case '6' : $str .="G"; break; case '7' : $str .="H"; break; case '8' : $str .="I"; break; case '9' : $str .="J"; break; case '10': $str .="K"; break; case '11': $str .="L"; break; case '12': $str .="M"; break; case '13': $str .="N"; break; case '14': $str .="O"; break; case '15': $str .="P"; break; case '16': $str .="Q"; break; case '17': $str .="R"; break; case '18': $str .="S"; break; case '19': $str .="T"; break; case '20': $str .="U"; break; case '21': $str .="V"; break; case '22': $str .="W"; break; case '23': $str .="X"; break; case '24': $str .="Y"; break; case '25': $str .="Z"; break; case '26': $str .=" "; break; case '27': $str .="."; break; case '28': $str .=","; break; case '29': $str .=";"; break; case '30': $str .="-"; break; case '31': $str .="@"; break; } } } // Fonction pour générer le seed function generateSeed($size, &$seed){ $lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .,;-@"; $seed = ""; for ($i=0;$i<$size;$i++){ $seed .= substr($lettres, (md5((time()*rand()))%($size))%32, 1); } } // Fonction de cryptage en utilisant XOR function cryptXor($mssg,$seed,&$crypted){ $size = strlen($mssg); convert_dec($mssg,$dec_mssg); convert_dec($seed,$dec_seed); // message XOR seed for ($i=0;$i<$size;$i++){ $crypt[$i] = ($dec_mssg[$i] ^ $dec_seed[$i])%32; } //Conversion du résultat du XOR en décimal convert_str($crypt,strlen($mssg),$crypted); } function decryptXor($crypted,$seed,&$decrypted){ $size=strlen($crypted); convert_dec($crypted,$dec_crypted); convert_dec($seed,$dec_seed); for ($i=0;$i<$size;$i++){ $decrypt[$i] = ($dec_crypted[$i] ^ $dec_seed[$i])%32; } convert_str($decrypt,$size,$decrypted); } $mssg = $_POST['texte']; $size = strlen($mssg); generateSeed($size,$seed); cryptXor($mssg,$seed,$crypted); decryptXor($crypted,$seed,$decrypted); echo "Message: ".$mssg."<BR /><BR />"; //echo "Seed : ".$seed."<BR />"; echo "Crypted: ".$crypted."<BR /><BR />"; echo "Decrypt: ".$decrypted."<BR />"; ?>
14 janv. 2005 à 23:28
juste comme ça, il y a mieux de Goethe.... par exemple les souffrances du jeune Werthert, et tout un tas de poèmes, si tu veux pousser dans la culture allemande, tu peux aussi chercher Die Arzte (mach die augen zu, allein in der nacht, shrei nach liebe, revolution, mir ist langweillig ...), ou de Honner (Viva Colonia)
Enfin tout ça pour te dire que ton texte est court, et ici, le crypter ne présente aucun interet, et fort heureusemnet, on n'avais pas fait souvent de XOR ici, on avait fait cesar, enigma, DES, MD5 (ce qui n'est pas du cryptage), mais c'est tout, le meilleur d'entre tout ces algos c'est DES, ton XOR ne lui arrive pas à la cheville à part si ta clef fait plus de la taille du texte à crypter...
DES te bat aussi niveau vitesse et compréhention du code car il est implémenté dans php...
sinon, pour la crypto, t'as AES RSA et un autre truc assymétrique dont je n'ai que peu entendu parlé...
15 janv. 2005 à 07:47
- y a peut-être mieux de Goethe selon toi, c'est chacun ces goûts
- md5 est une fonction de hashage, pas de cryptage, , y a pas de soucis à ce sujet
- cesar, ça se base sur un simple décalage alphabetique, enigma sur des rotors et des connexions, c'est deux univers totalement différents (j'ai bossé sur Enigma, je dis pas ça au bol donc).
- DES n'est pas le meilleur algo de cryptage, il y en a des bien plus puissants
- DES est implémenté en php et n'a donc aucun intérêt niveau programmation tel quel
- AES, RSA etc sont effectivement d'autres algorithmes de cryptages, AES est symétrique (si ma mémoire est bonne), RSA pas
Alors oui, mon algorithme ici c'est du pipi de chat à coté de ces standards que sont DES, AES, RSA... mais je m'en fouts, mon but était de pondre quelque chose. De plus, mon one-time-password n'est pas cassable par un analyseur, alors tu comprendras que je trouve ta remarque un peu hautaine et ton "4" facile...
15 janv. 2005 à 11:57
Quand à mon 4, accuses donc qqn d'autre, je ne t'ai pas noté... Cette personne était extrèmement lache car elle n'a pas cherché à te donner des amélioratrion possibles...
si tu veux de la doc sur la crypto, laisse moi ton mail...
Pour tes switchs, tu aurais pu faire une chaine et un for...
15 janv. 2005 à 12:58
Je sais bien que DES et compagnie sont mieux que mes XOR, ce ne seraient pas des standards sinon! J'ai voulu faire quelque chose par moi même, qui me suffise au niveau sécurité, c'est tout. Mais ça a pas lâire de plaire ;o) Tant pis, je ferai mieux pour ma prochaine soure !!!
See you
15 janv. 2005 à 13:22
L'avantage du XOR, c'est qu'il n'a pas de taille de clef prédéfinie, donc on peut faire un XOR avec une iamge ISO de 4 GO, ce qui pourra crypter quasi nimporte quel fichier avec une sécuritée maximale...
seul problème : le passage de la clef...
On ne passe pas facilement une clef de 4GO...
et si tu le fait en local, ça veut dire que tu as la clef sur toi...
Enfin voila, c'est irréalisable...
C'est pour cette raison que j'aimes bien les principes de RSA... et tout ce qui est assymétrique...
Il existe une autre méthode puissante de crypto assymétrique, avec des équations très jolies en "bules" si tu connais, je suis prenneur, je n'ai pas de doc sur celle la, et j'en aurais vraiment besoin pour choisir ma méthode... (il existe des choses qui ne devraint ni êtres lues, ni êtres vécues...) J'ai vraiment besoin de crypter, je ne peux passer un fichier de 4GO sur le net, donc j'ai vraiment besoin de cette doc...
Je dois ajouter : je n'ai pas mis de note, et il vaut plus que 4 pour te prouver que je n'ai pas mis de notes, je met 8/10...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.