Crypatge/décryptage de texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 646 fois - Téléchargée 33 fois

Contenu du snippet

j'ai voulu passer le temps en ecrivant un script de cryptage/décrypatage de textes, étant donné que je ne connais rien dans ce domaine, je voudrais demander l'avis de gens qui s'y connaissent un peu plus que moi :)

En fait, ce que je voudrais savoir, c'est ce que vaut ce script et si l'idée est bonne.

Source / Exemple :


<?php
 /*________________________________________________________
 | MOD name : _________________________________ crypyDatas \
 | Author : ______________________________________ GerGalP |
 | Filename : __________________________________ crypt.php |
 | Started : ______________________________ 09 / 10 / 2004 |
 | Latest modifications : _________________ 10 / 10 / 2004 |
 | File revision : ___________________________________ 1.1 |
 \*_______________________________________________________*/
//<div style="display:none"><noscript><!--

set_time_limit(20);
// Une fonction qui consiste à créer un tableau en fonction de la clé de donnée en parametre
function mk_key(&$key)
{
	$str_key = $key;
	$key = array();
	$length = strlen ($str_key);
	$offset = ord ($str_key[$length - 1]);

	for ($k = 0; $k < $length; $k++)
	{
		$offset += $k;
		for (''; $offset >= $length; $offset -= $length);
		for (''; $offset < 0; $offset += $length);

		$key[$k] = ord ($str_key[$offset]);
	}
	return true;
}
// Crée un tableau ou l'on stocke tous les caractères pour éviter d'appeler a chaque fois la fonction chr()
function char (&$chr)
{
	for($i = 0; $i < 256; $i++)
	{
		$chr[$i] = chr($i);
	}
	return true;
}
// fonction de cryptage du texte
function encrypt ($text, $char, $key = "\0")
{
	mk_key($key);
	$data = '';
	$k = 0;
	for ($i = 0; $i < strlen ($text); $i++)
	{
		($k > count ($key) ? $k = 0 : '');

// on indique quel caractere remplacera l'original.
		$chr_id = ord ($text[$i]) + ( ($key[$k] % 2) ? ($key[$k] - $key[$k - 1]) : ($key[$k] - $key[$k + 1]) );
		for (''; $chr_id > 256; $chr_id -= 256);
		for (''; $chr_id <= 0; $chr_id += 256);

		$data .= $char[$chr_id] ;
	
   		$k++;
	}
	return $data;
}
// fonction de décryptage des données
function decrypt ($data, $char, $key = "\0")
{
	mk_key ($key);

	$text = '';
	$k = 0;
	for ($i = 0; $i < strlen($data); $i++)
	{
		($k > count ($key) ? $k = 0 : '');
		
		$chr_id = ord ($data[$i]) - ( ($key[$k] % 2) ? ($key[$k] - $key[$k - 1]) : ($key[$k] - $key[$k + 1]) );
		for (''; $chr_id > 256; $chr_id -= 256);
		for (''; $chr_id <= 0; $chr_id += 256);
		$text .= $char[$chr_id];

		$k++;
	}
	return $text;
}
// test du script :
$data = 'Ici, on a le texte qui doit être crypté, on peut écrire ce que qu\'on veut,'
	.' de toute facon, c\'est qu\'un test pour voir ce à quoi ca ressemble.'
	.' Et puis bon, on s\'en fout un peu du texte pour l\'instant.'
	.' Et de toute facon, on peut toujours augmenter le nombre de caracteres pour'
	.' voir si jamais ca finit par saturer un jour ou l\'autre.'
	.' Ah ben non, on dirait que ca marche bien tout ca!! De toute facon,'
	.' j\'ai toujours pas trouvé d\'utilité a ce script.';

$key = 'C\'est la clé de cryptage qui va nous permettre de vérifier le cryptage.';

// utilisation des variables
char($char);
$encrypt = encrypt ($data, $char, $key);
$decrypt = decrypt ($encrypt, $char, $key);

//Affichage du fonctionnement
echo 'Taille du message original: ' . strlen ($data) . " Octets <br>\n<br>\n";
echo $data . "<br>\n<br>\n";
echo 'Taille du message crypté: ' . strlen ($encrypt) . " Octets <br>\n<br>\n";
echo $encrypt . "<br>\n<br>\n";
echo 'Taille du message décrypté: ' . strlen ($decrypt) . " Octets <br>\n<br>\n";
echo $decrypt . "<br>\n<br>\n";

?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

j'ai modifié un petit peu le fonctionnement, le texte n'est plus en clair au milieu des caracteres ajoutés, et le nombre de caracteres reste toujours le meme
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

j'avais bien compris, et je ne peux que t'encourager à poursuivre, la crypto c'est passionnant :)

si tu t'en sens l'envie, va faire un tour chez www.hackquest.com, il y a plein de challenges de cassage de messages cryptés. avec un ami on a résolu pas mal de choses (surtout lui ^^) et on a bcp appris!
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

nan, mais en fait, j'ai pas vraiment besoin de sécuritéssur mon site (si on peut appeler ca un site :) ) , j'ai juste fait ca pour tenter de faire du cryptage perso (lent et inutile) et apprendre un petit peu sur le sujet.
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

ah ok je vois, j'ai repéré les caractères mtnt.

ben si tu veux mon avis, c'est pas une bonne idée :/ 800% de plus en moyenne, c'est énorme, et la sécurité n'est pas top, vu que les caractères st encore là, en clair. je dois y réfléchir, mais je pense que ça doit être cassable.

si t'as besoin de vraie sécurité, utilise un DES, c'est implémenté en PHP.
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

en fait, on crée un tableau en fonction de la clé
par exemple, si j'utilise la clé "Clé de cryptage", la fonction mk_key() va crééer ce tableau:
Array
(
[0] => 11
[1] => 14
[2] => 15
[3] => 8
[4] => 12
[5] => 6
[6] => 3
[7] => 10
[8] => 13
[9] => 15
[10] => 8
[11] => 12
[12] => 6
[13] => 3
[14] => 2
[15] => 1
[16] => 1
[17] => 1
[18] => 9
[19] => 5
[20] => 3
[21] => 2
)

Ensuite, ce tableau permet de définir le nombre de caractere qu'on va rajouter dans la chaine cryptée entre chaque caractere de la chaine d'origine à l'aide d'une boucle.
Ici, au premier cycle, on rajoutera 11 caracteres, au 2e cycle 14 caracteres, au 3e cycle 15 caracteres, ect...

Bien sur, il y a un tres grand nombre de possibilités puisque les caracteres ajoutés sont définis aléatoirement.

"implicitement ce code n'est pas de toi."
Ben euh, si, pourquoi j'aurais posté une source simple comme celle la si elle était pas entierement de moi, ce que je voulais savoir, c'est si cette technique est bonne ou pas, et savoir ce qui faut modifier pour la rendre plus difficile à décrypter par bruteforce.

"le résultat est bcp plus gros que la chaîne de départ. en moyenne, tu as un facteur de dilatation de combien?"
Euh, c'est assez aléatoire, mais la moyenne doit tourner autour de 9 fois la taille d'origine(ca varie aléatoirement de 1 à 17)
Afficher les 9 commentaires

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.