Accueil > > > CRYPTAGE / DECRYPTAGE BASIQUE EN PHP UTILISANT LE PRINCIPE DU CARRE DE VIGENÈRE
CRYPTAGE / DECRYPTAGE BASIQUE EN PHP UTILISANT LE PRINCIPE DU CARRE DE VIGENÈRE
Information sur la source
Description
Bon, c'est hyper basique comme cryptage. J'avais pondu ca lors de mes cours de philo, en 98, au debut c'etait en Pascal. Je l'ai converti en Php l'an passe pour m'amuser un peu. (c'est fou ce qu'on s'ennuie en Oklahoma...!) Le principe est simple: on dispose d'un texte que l'on veut crypter. On y ajoute une clef. Le principe est d'ajouter la valeur ascii de la premiere lettre du texte original a la valuer ascii de la premiere lettre de la clef, et ainsi de suite jusqu'a la fin du texte. Pour le decodage, on fait l'oppose. Le code est a ameliorer...
Source
- =--= Fonction "Crypter" =--=
-
- //Début de ma fonction crypter
- //Entrée: message à crypter, mot de passe. (les deux sont de type chaine)
- //Je considère les chaines comme étant des tableaux de caractères
- //Sortie: message encrypté. (chaine)
- //Ecrit par Tadpole, Décembre 1998, cours de Philo.
- //Traduit du Pascal/Delphi
- function crypter($mes,$password) {
- $res=' ';
- $j=0;
- $tmp=0;
- //initialisations des variables.
- //J'ai pour habitude de toujours déclarer les types de mes variables...
- $lgmot = strlen($mes);
- //on récup la longueur du message
- //puis on boucle en analysant chaque caractère tour à tour jusqu'au bout du message.
- for ($i = 0; $i < $lgmot; $i++) {
- $tmp = ord($mes[$i]) + ord($password[$j]);
- //La ligne précédente est le coeur du programme:
- //on ajoute la valeur ascii du caractère en position i
- //à la valeur ascii du caractère en position j. Simple mais efficace.
- //si le resultat est supérieur a 255, pas de panique, on enlève 256 et on retombe sur nos pieds ;-)
- if ($tmp > 255) {
- $tmp = $tmp - 256;
- }
- $res[$i]=chr($tmp);
- if ($j == (strlen($password)-1)) {
- $j= 0;
- } else {
- $j=(($j % (strlen($password))) + 1);
- //Ahh... le modulo... J'adore :-)
- }
- }
- $res = base64_encode($res);
- //base64 est conseille pour le traitement des chaines longues, cf. 'Programming PHP', Ed. O'Reilly, Rasmus Lerdorf & Kevin Tatroe, page 385.
- return $res;
- //On retourne le messsage crypté.
- }
-
- =--= Fonction "Décrypter" =--=
-
- //Début de ma fonction décrypter
- //Entrée: message à décrypter, mot de passe. (les deux sont de type chaine)
- //Je considère les chaines comme étant des tableaux de caractères
- //Sortie: message décrypté. (chaine)
- //Ecrit par Tadpole, Décembre 1998, cours de Philo.
- //Traduit du Pascal/Delphi
- function decrypter($mes,$password) {
- $res=' ';
- $j=0;
- $tmp=0;
- //Initialisation des variables
- $mes = base64_decode($mes);
- //on decode le message encode en base64.
- //Ensuite, on récup la longueur du message
- //Puis on boucle tant que nous n'avons pas parcouru
- //chaque lettre contenue dans le message.
- $lgmot = strlen($mes);
- for ($i = 0; $i < $lgmot; $i++) {
- $tmp = ord($mes[$i]) - ord($password[$j]);
- //ici on prends les 2 valeurs ascii des caratères du message
- //en position i et du mot de passe en position j et on les soustrait.
- //Si le résultat est négatif, pas de panique, on ajoute 256 et hop,
- //nous nous y retrouvons.
- if ($tmp < 0) {
- $tmp = 256 + $tmp;
- }
- $res[$i]=chr($tmp);
-
- if ($j == (strlen($password)-1)) {
- $j= 0;
- } else {
- $j=(($j % (strlen($password))) + 1);
- //Modulo pour parcourrir le mot de passe...
- }
- }
- return $res;
- }
-
=--= Fonction "Crypter" =--=
//Début de ma fonction crypter
//Entrée: message à crypter, mot de passe. (les deux sont de type chaine)
//Je considère les chaines comme étant des tableaux de caractères
//Sortie: message encrypté. (chaine)
//Ecrit par Tadpole, Décembre 1998, cours de Philo.
//Traduit du Pascal/Delphi
function crypter($mes,$password) {
$res=' ';
$j=0;
$tmp=0;
//initialisations des variables.
//J'ai pour habitude de toujours déclarer les types de mes variables...
$lgmot = strlen($mes);
//on récup la longueur du message
//puis on boucle en analysant chaque caractère tour à tour jusqu'au bout du message.
for ($i = 0; $i < $lgmot; $i++) {
$tmp = ord($mes[$i]) + ord($password[$j]);
//La ligne précédente est le coeur du programme:
//on ajoute la valeur ascii du caractère en position i
//à la valeur ascii du caractère en position j. Simple mais efficace.
//si le resultat est supérieur a 255, pas de panique, on enlève 256 et on retombe sur nos pieds ;-)
if ($tmp > 255) {
$tmp = $tmp - 256;
}
$res[$i]=chr($tmp);
if ($j == (strlen($password)-1)) {
$j= 0;
} else {
$j=(($j % (strlen($password))) + 1);
//Ahh... le modulo... J'adore :-)
}
}
$res = base64_encode($res);
//base64 est conseille pour le traitement des chaines longues, cf. 'Programming PHP', Ed. O'Reilly, Rasmus Lerdorf & Kevin Tatroe, page 385.
return $res;
//On retourne le messsage crypté.
}
=--= Fonction "Décrypter" =--=
//Début de ma fonction décrypter
//Entrée: message à décrypter, mot de passe. (les deux sont de type chaine)
//Je considère les chaines comme étant des tableaux de caractères
//Sortie: message décrypté. (chaine)
//Ecrit par Tadpole, Décembre 1998, cours de Philo.
//Traduit du Pascal/Delphi
function decrypter($mes,$password) {
$res=' ';
$j=0;
$tmp=0;
//Initialisation des variables
$mes = base64_decode($mes);
//on decode le message encode en base64.
//Ensuite, on récup la longueur du message
//Puis on boucle tant que nous n'avons pas parcouru
//chaque lettre contenue dans le message.
$lgmot = strlen($mes);
for ($i = 0; $i < $lgmot; $i++) {
$tmp = ord($mes[$i]) - ord($password[$j]);
//ici on prends les 2 valeurs ascii des caratères du message
//en position i et du mot de passe en position j et on les soustrait.
//Si le résultat est négatif, pas de panique, on ajoute 256 et hop,
//nous nous y retrouvons.
if ($tmp < 0) {
$tmp = 256 + $tmp;
}
$res[$i]=chr($tmp);
if ($j == (strlen($password)-1)) {
$j= 0;
} else {
$j=(($j % (strlen($password))) + 1);
//Modulo pour parcourrir le mot de passe...
}
}
return $res;
}
Conclusion
Voila, j'attends vos critiques, car je sais que ce source est loin d'etre parfait :)
Historique
- 17 octobre 2006 09:24:33 :
- Caché mon nom :)
- 17 octobre 2006 09:27:16 :
- Ajout de commentaires
- 18 octobre 2006 08:37:27 :
- Mise a jour: J'ai tenu compte des critiques. Je vous propose cette version sans les declarations de variables. Encore merci pour les commentaires :)
- 03 novembre 2006 00:49:11 :
- efface le ltrim($res);
- 14 décembre 2006 09:39:17 :
- corrections mineures
- 12 février 2007 23:52:37 :
- Mise en plac du codage/decodage en base64. Modifications mineures. Teste et approuve :)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Cryptage !!??!! [ par vincenteraptor ]
UGH!Comment va les PHPCSusers???J ai un pb : j aimerai savoir deux petites choses à propos de cryptage :- Existe t il des fonction de cryptage réversi
Sécurité & Cryptage des sources [ par GregPeck ]
Bonjour,Je viens de créer à ma boite un logiciel de gestion de planning en php mysql sur un serveur linux. Les gens peuvent créer leur planning sur no
Se servir des fonctions php cryptage [ par SaFt ]
bonjour voila j'essaye désesperement de faire fonctionner les fonctions php du genre base64_encode/decode; encrypt/decrypt et d'autre. je ne comprend
codage UFT-8 au lieu de ISO [ par fyav ]
avant, tous mes fichiers php qui envoyaient un formulaire fonctionnaient très biendepuis 3 jours, sans changer la programmation, IE considère mes page
htpasswd [ par neolien ]
Bonjour à tous, Je suis débutant en php et j'essaie de placer une sécurisation sur des répettoires avec htacess et htpasswd. Pour
cryptage mot de passe [ par eax ]
salut!j'ai vu sous phpmyadmin qu'on pouvait crypter des champs varchar lorsqu'ils contiennent des mots de passe par exemple, mais on fait comment en p
Cryptage AES ... [ par LocalStone ]
Bonsoir à tous, Je cherche désesperement un script PHP qui permeterait de crypter n'importe quel texte avec un codage AES (ou autre, mais un
Cryptage des sources PHP [ par Will28 ]
Bonjour, je voulais savoir si quelqu'un pouvait me renseigner sur le cryptage des sources PHP, et plus spécialement sur les produit Zend.En
*PHP* Cryptage adresse mail ! [ par masterfree ]
Bonjour à tous,Avant, j'avais un site en Html; maintenant, je fais le même en PHP.Je crypte mes mails en JS (Html). J'ai vu plusieurs exempl
fonction de cryptage compatible PHP et javascript [ par pastis51forever ]
Bonjour!Je suis à la recherche d'une fonction de cryptage qui existerait en php et en javascript (En fait une fonction php et une javascript compatibl
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|