begin process at 2012 02 15 06:23:29
  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 :5 489

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

Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
Source avec Zip PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien
CRYPTAGE/DECRYPTAGE MCRYPT par sephirothgeek

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...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,702 sec (4)

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