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 ( "&" , "&" , $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 ( ">" , "›" , $decryptage_2);
$decryptage_fini_2 = str_replace ( "<" , "‹" , $decryptage_fini_2);
$decryptage_fini_2 = str_replace ( " " , " " , $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 ^^