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