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";
?>
10 oct. 2004 à 19:50
10 oct. 2004 à 17:31
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!
10 oct. 2004 à 17:22
10 oct. 2004 à 17:13
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.
10 oct. 2004 à 17:07
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)
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.