Script de cryptage ...

WRInaute accro
J'ai degoté sur le web ce script de cryptage ... D'après ce que j'ai pigé il ruse pour faire du 256 bits ...

Coté solidité, vous en pensez quoi ?

Code:
<?php
$key1 = "Ceci est ma premiere cle secrete";
$key2 = "Voilà ma deuxieme cle aussi secrete";
$input = "Voilà un joli texte que je veux cacher à la convoitise des curieux de tout poil !";
$length = strlen($input);

    /* Open the cipher */
    $td = mcrypt_module_open('rijndael-256', '', 'cbc', '');

    /* Create the IV and determine the keysize length, use MCRYPT_RAND
     * on Windows instead */
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    $ks = mcrypt_enc_get_key_size($td);

    /* Create key */
    $key1 = md5($key1);
    $key2 = md5($key2);

    $key = substr($key1, 0, $ks/2) . substr(strtoupper($key2), (round(strlen($key2) / 2)), $ks/2);

    $key = substr($key.$key1.$key2.strtoupper($key1),0,$ks);

    /* Intialize encryption */
    mcrypt_generic_init($td, $key, $iv);

    /* Encrypt data */
    $encrypted = mcrypt_generic($td, $input);

    /* Terminate encryption handler */
    mcrypt_generic_deinit($td);

    /* Initialize encryption module for decryption */
    mcrypt_generic_init($td, $key, $iv);

    /* Decrypt encrypted string */
    $decrypted = mdecrypt_generic($td, $encrypted);

    /* Terminate decryption handle and close module */
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);

    /* Show string */
    echo "Original: ".$input."<br>";
    echo "Crypté: ".$encrypted ."<br>";
    echo "Décrypté: ".substr($decrypted,0,$length) . "<hr>";

    echo "<br>key1: $key1 <br>key2: $key2<br>created key: $key";
?>
 
WRInaute accro
Question subsidiaire : Imaginons que chaque membre inscrit sur le site puisse choisir ses deux cles à lui et rien qu'a lui et qu'il soit le seul à les connaitre ... et qu'ils les oublie !!!! Moyen de retrouver le texte original quand meme ou c'est perdu de chez looser ? :mrgreen:

Corrolaire : Imaginons maintenant que le site soit requis par la justice pour communiquer le contenu de telle ou telle zone ainsi cryptée ... Comment on fait ? Parce que je doute que la chaine : A@…çwg°Ý‹Õ…‚üƒ‘gîÿcñÕÚF¤½¿ˆ¡èäjvâÑklçŸ5௚Æ[Åbhýc4́¾ç›F-­¥ømÒ*BضfzDx™ }åH¿è¹€à˜âÓ“4Œœé

les satisfasse ... :mrgreen:
 
WRInaute accro
Le script fait tout plein de manipulations bizarres et probablement pas utiles du tout (voire contreproductives) sur les clefs fournies. En plus il utilise MD5 dans ces manipulations, alors que MD5 est désormais fortement déconseillé. Et les deux clefs, je ne sais pas très bien quel est l'intérêt?

Une bonne clef, passée à SHA-256 (mais en binaire, pas en hex) sera largement plus efficace. Quelque chose du genre:
Code:
hash('sha256',$clef,true)

Si tu stockes les données chiffrées et que tu ne stockes pas la clef, effectivement, les données sont inaccessibles. Et si tu stockes des données de cette façon, et que seul celui qui les a stockées là y a accès (i.e. tu ne publies rien, c'est juste du stockage), je ne pense pas que tu aies la moindre responsabilité vis-à-vis de la justice.

Jacques.
 
WRInaute accro
jcaron a dit:
Une bonne clef, passée à SHA-256 (mais en binaire, pas en hex) sera largement plus efficace. Quelque chose du genre:
Code:
hash('sha256',$clef,true)
Noté ... je vais renforcer ainsi ... Mais au dela de cela, le cryptage ainsi obtenu te parait solide ?

Précision : En fait une fois le champs crypté, j'y ajoute une "couche de pollution" (du style injection de chaines parasites, inversion d'octest, etc) imaginant (peut etre a tort) rendre encore plus délicate une opération de cassage se basant sur le fait que c'est tel type d'alogo qui a crypté. Utile ou parfaitement sans intéret compte tenu de ce que fait deja tripleDES ?

jcaron a dit:
Si tu stockes les données chiffrées et que tu ne stockes pas la clef, effectivement, les données sont inaccessibles. Et si tu stockes des données de cette façon, et que seul celui qui les a stockées là y a accès (i.e. tu ne publies rien, c'est juste du stockage), je ne pense pas que tu aies la moindre responsabilité vis-à-vis de la justice.
Pas si simple je pense : En effet, si une personne est suspectée de stocker des informations illicites, la justice peut demander a ce que le contenu de telle ou telle fiche lui soit communiqué.
 
WRInaute accro
Ce n'est pas du triple-DES, c'est de l'AES 256 bits, tu ne devrais pas voir besoin de faire des bêtises avec.

Si tu veux être 100% tranquille, tu laisses l'utilisateur faire le chiffrement lui-même, et tu stockes ce qu'il te donne. Pour le reste, je n'ai pas suivi les évolutions réglementaires sur le chiffrement en France (ou ailleurs)...

Jacques.
 
WRInaute accro
Je tiens a dire publiquement un GRAND MERCI à jcaron (un de plus vous me direz vu le nombre de fois ou jacques nous a aidé les uns ... et les autres je présume). Dans le cadre de cette routine, il me manquait manifestement des bases et je tournais en rond de chez j'en ai marre de tourner en rond ! :mrgreen:

Et qui m'a sorti de la panade : j'ai nommé jcaron ... qui a pris le temps de m'expliquer ou je merdouillais et ce que je devais faire ... Tout seul j'aurais surement fini par trouver à force mais ca m'aurait pris 3 jours ... ou pire ... :oops:

La ca a été plié en 1 heure. Donc BIG MERCI JACQUES
 
Discussions similaires
Haut