Cryptage/decryptage mcrypt

Contenu du snippet

Formulaire de cryptage/decryptage simple, utilisation de 2 algo successif, utilisation du module Mcrypt http://php.net/manual/fr/book.mcrypt.php
Je debute en php donc ce code est loin d'etre parfait, si vous voulez un exemple de ce code:
http://sephirothgeek.com/outils/cryptage.php

Source / Exemple :


<?php 

$request_url = $_SERVER['REQUEST_URI'];
$request_url = str_replace ( "&" , "&amp;" , $request_url); 
/* L'utilisation de cette variable dans le formulaire est obligatoire pour passer le validateur du W3C */

echo "<div id='corps'>\n";
echo "<h1> Cryptage </h1>\n";

/*Encryptage*/
if ((isset($_POST['texte_crypter'])) AND (isset($_POST['cle_cryptage']))) {

	/* Recuperation des POST */
	$message = stripslashes($_POST['texte_crypter']);
	$key = stripslashes($_POST['cle_cryptage']);
	
	/*definition du 1er algorithme et du 1er mode */
	$algo = "rijndael-256";
	$mode = "cbc";
	
	$td = mcrypt_module_open($algo, "", $mode, "");
	$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
	
	/*Tronquature de la cle si elle est trop grosse */
	$size = mcrypt_enc_get_key_size($td);
        $key = substr($key, 0, $size);
	
	$iv_encode = base64_encode($iv);
	
	/*Affichage de l'IV numero 1 */
	echo "<span class='souligne'>Votre IV(1):</span><br><input type='text' value='$iv_encode'><br>";
	
	/*Encryption numero 1 */
	mcrypt_generic_init($td, $key, $iv);
        $message_crypter_1 = mcrypt_generic($td, $message);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $message_crypter_fini_1 = base64_encode($message_crypter_1);
	
	/*definition du 2eme algorithme et du 2eme mode */
	$algo = "serpent";
	$mode = "cbc";
	
	$td = mcrypt_module_open($algo, "", $mode, "");
	$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
	$iv_encode = base64_encode($iv);
	
	/* Troncature de la clé */
	$size = mcrypt_enc_get_key_size($td);
        $key = substr($key, 0, $size);
	
	/* Afficahge de la cle apres traitement */
	echo "<span class='souligne'>Votre clé:</span><br><input type='text' value='$key'><br>";
	
	/*Affichage de l'IV numero 2 */
	echo "<span class='souligne'>Votre IV(2):</span><br><input type='text' value='$iv_encode'><br>";
	
	/*Encryption numero 2 */
	mcrypt_generic_init($td, $key, $iv);
        $message_crypter_2 = mcrypt_generic($td, $message_crypter_fini_1);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $message_crypter_fini_2 = base64_encode($message_crypter_2);
	
	/*Affichage du message crypter */
	echo "<span class='souligne'>Votre message crypter:</span><br><textarea cols=50 rows=8>$message_crypter_fini_2</textarea><br>";
}
/* Decryptage */
if ((isset($_POST['texte_decrypter'])) AND (isset($_POST['cle_decryptage'])) AND (isset($_POST['IV1']))  AND (isset($_POST['IV2']))) {

	/* Recuperation des POST */
	$texte_crypter = stripslashes($_POST['texte_decrypter']);
	$cle_de_decryptage = stripslashes($_POST['cle_decryptage']);
	
	/* Recuperation de l'iv 2 */
	$iv_2 = stripslashes($_POST['IV2']);
	$iv_2 = base64_decode($iv_2);
	/* Recuperation de l'iv 1 */
	$iv_1 = stripslashes($_POST['IV1']);
	$iv_1 = base64_decode($iv_1);

	/*definition du 1er algorithme et du 1er mode */
	$algo_1 = "serpent";
	$mode_1 = "cbc";
	
	$td_1 = mcrypt_module_open($algo_1, "", $mode_1, "");
	mcrypt_generic_init($td_1, $cle_de_decryptage, $iv_2);
	
	/*Decryptage numero 1 */
        $decryptage_1 = mdecrypt_generic($td_1, base64_decode($texte_crypter));
        mcrypt_generic_deinit($td_1);
        mcrypt_module_close($td_1);
        $decryptage_fini_1 = $decryptage_1;
	
	/*definition du 2eme algorithme et du 2eme mode */
	$algo_2 = "rijndael-256";
	$mode_2 = "cbc";
	
	$td_2 = mcrypt_module_open($algo_2, "", $mode_2, "");
	mcrypt_generic_init($td_2, $cle_de_decryptage, $iv_1);
	
	/*Decryptage numero 2 */
        $decryptage_2 = mdecrypt_generic($td_2, base64_decode($decryptage_fini_1));
        mcrypt_generic_deinit($td_2);
        mcrypt_module_close($td_2);
	$decryptage_fini_2 = str_replace ( ">" , "&#155;" , $decryptage_2); 
	$decryptage_fini_2 = str_replace ( "<" , "&#139;" , $decryptage_fini_2); 
	$decryptage_fini_2 = str_replace ( " " , "&#160;" , $decryptage_fini_2);
	$decryptage_fini_2 = str_replace ( "\0" , "" , $decryptage_fini_2);
        $decryptage_fini_2 = stripslashes(nl2br($decryptage_fini_2));
 	
	/* Affichage du message decrypté*/
	echo "<span class='souligne'>Votre message decrypter:</span><br><br>$decryptage_fini_2<br><br>";
}
echo "<form action='$request_url' method='post'>\n";
echo "Crypter ce texte :<br>\n";
echo "<textarea name='texte_crypter' cols=50 rows=2>\n";
echo "</textarea>\n";
echo "<br> Avec cette clé de cryptage (entrer un court texte au hasard a retenir):<br>\n";
echo "<input type='text' name='cle_cryptage' value=''>\n";
echo "<input type='submit' value='Encrypter' />\n";
echo "</form><br>\n";
echo "<h1> Decryptage </h1>";
echo "<form action='$request_url' method='post'>\n";
echo "Decrypter ce texte :<br>\n";
echo "<textarea name='texte_decrypter' cols=50 rows=2>\n";
echo "</textarea>\n";
echo "<br> Avec cette clé de decryptage:<br>\n";
echo "<input type='text' name='cle_decryptage' value=''>\n";
echo "<br> Avec ce IV(1):<br>\n";
echo "<input type='text' name='IV1' value=''>\n";
echo "<br> Avec ce IV(2):<br>\n";
echo "<input type='text' name='IV2' value=''>\n";
echo "<input type='submit' value='Decrypter' />\n";
echo "</form><br>\n";
echo "</div>\n";
?>

Conclusion :


J'espere que ca aura servi a quelqu'un ^^

A voir également

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.