begin process at 2010 03 21 12:14:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPATGE/DÉCRYPTAGE DE TEXTE

CRYPATGE/DÉCRYPTAGE DE TEXTE


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :09/10/2004 Date de mise à jour :10/10/2004 19:48:03 Vu :4 869

Auteur : gergalp

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

 Description

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

  • <?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";
  • ?>
<?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";

?>



 Historique

10 octobre 2004 19:48:06 :
j'ai changé un petit peu le fonctionnement, au lieu d'ajouter n caracteres, je décale le caractere de n rangs dans la table ASCII

 Sources du même auteur

Source avec Zip Source avec une capture [POO] HIGHLIGHT_FILE SUR DES FICHIERS EN C/C++
Source avec Zip CLASSE D'ANALYSE DES ID3 V1 CONTENUS DANS LES MP3
FICHIERS LOG, STATS, TRACES DU PASSAGE DES VISITEURS SUR UN ...
VÉRIFICATION DE LA PRÉSENCE D'UN SERVEUR

 Sources de la même categorie

FONCTION DE NETTOYAGE DE VARIABLES AVEC UNE INSTALLATION DE ... par jroger
ALGORITHME DE CÉSAR SUR LA TABLE ASCII par Nementon
Source avec une capture CODEC D'OBFUSCATION DE LIEN HTML (PHP5) par masternico
GÉRER UN .HTPASSWD par coockiesch
Source avec Zip SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT par Astalavista

Commentaires et avis

Commentaire de defkrie le 09/10/2004 19:33:20

regarde ma source César et César plus qui est dans le meme esprit.

Commentaire de Kirua le 10/10/2004 13:32:30

n'utilise pas un César en tt cas, c'est la pire méthode de toutes les mauvaises, lol. un brute force de César ça te fait maximum 25 calculs! c'est pas bon, et puis: ça se voit. qq un qui veut casser ton message va d'abord tester césar, puis pê voir si c'est un xor, et d'autres petites choses comme ça.

sinon, pr ta méthode, tu pourrais montrer un exemple de "texte" -> "texte crypté" -> "texte décrypté" ?

Commentaire de juki_webmaster le 10/10/2004 16:26:46

Sa a l'air terrible !
Chaîne que je crypte : test du codage
Clef : juki
Resultat de la chaîne crypter : ý©lt&† È=•a ÂeJ®²ìœh‹ä¼ òß s’¡Ã ËÀ­t8æ3O¯qå ~ìÓÈ š†µ7îAd «^ Šw¡,:¥øuúR0ᆀøf¡vSt> îúô&é5B”“R ôKEc™D@ìu"söo²k\Tdá°agÈ že

A premiere vue, sa à l'air d'être un bon systeme de cryptage.

"En fait, ce que je voudrais savoir, c'est ce que vaut ce script et si l'idée est bonne." implicitement ce code n'est pas de toi.

9/10 pour son auteur.

Commentaire de Kirua le 10/10/2004 16:43:30

le résultat est bcp plus gros que la chaîne de départ. en moyenne, tu as un facteur de dilatation de combien? ça m'a l'air bcp :/ si tu "cryptes" un mp3, ça va prendre plein de place.

"A premiere vue, sa à l'air d'être un bon systeme de cryptage."

je sais pas sur quoi tu te bases, mais si c'est parce que les caractères sont bizarres que tu dis ça, ben ça ne veut rien dire du tout. ce qui importe, c'est la valeur numérique.

Commentaire de gergalp le 10/10/2004 17:07:04

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)

Commentaire de Kirua le 10/10/2004 17:13:50

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.

Commentaire de gergalp le 10/10/2004 17:22:34

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.

Commentaire de Kirua le 10/10/2004 17:31:53

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!

Commentaire de gergalp le 10/10/2004 19:50:26

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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 (4)

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