• STATISTIQUES
  • Il y a eu un total de 0 membres et 3607 visiteurs sur le site dans les dernières 24h pour un total de 3 607 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] chiffrement asymétrique avec OpenSSL
16-01-2013, 18h31 (Modification du message : 20-01-2013, 18h44 par InstinctHack.)
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[Php] chiffrement asymétrique avec OpenSSL
ancien title : Incompatibilité cipher/mode et absurdité de taille d'iv

Bonjour!

J'ai codé cette petite fonction php qui utilise la librairie mcrypt pour tester toutes les possibilités de chiffrement (c'est inutile mais juste pour voir :> )

voilà mon code
Code PHP :

function multi_crypt($data,$key)
{
    $ciphers=mcrypt_list_algorithms();
    $modes=mcrypt_list_modes();
    $error=0;
    echo count($ciphers)*count($modes).' possibilités de chiffrement'.'<br />';

    foreach($ciphers as $key_cipher=>$cipher)
    {
        foreach($modes as $key_mode=>$mode)
        {
            $iv_size = @ mcrypt_get_iv_size($cipher,$mode);
//          if($iv_size===false){$iv_size='/!\\ ERROR /!\\';}
            if($iv_size!==false)
            {
                if(mb_strlen($key)>mcrypt_module_get_algo_key_size($cipher))
                {
                    $key=substr($key, 0,mcrypt_module_get_algo_key_size($cipher)-1);
                }

                if($iv_size>0)
                {
                    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
                    $crypttext = mcrypt_encrypt($cipher, $key, $data,$mode, $iv);
                }
                else
                {
                    $crypttext = @ mcrypt_encrypt($cipher, $key, $data,$mode);
                }


                echo    'Cipher : '.$key_cipher.' - '.$cipher,
                        ' Mode : '.$key_mode.' - '.$mode,
                        ' Iv : '.$iv_size.' - '.base64_encode($iv),
                        ' Result : '.base64_encode($crypttext),
                        '<br />';
            }
            else
            {
                $error++;
            }
        }
    }
    echo "nb error".$error;
}
multi_crypt('voila c est mon texte secret','jamais tu ne l auras jamais');

 


J'ai seulement des problèmes aux lignes auxquelles les erreurs ont étaient supprimés (par un "@" ) la première ligne semble montrer que certains algos ne peuvent êtres utilisés avec certains modes (ça je peut comprendre), la deuxième ligne cependant me reste confus...
Citation :Warning: mcrypt_encrypt() [<a href='function.mcrypt-encrypt'>function.mcrypt-encrypt</a>]: Attempt to use an empty IV, which is NOT recommend
MAIS c'est précisément car certains algo n'utilisent pas d'IV que cette ligne existe dans mon code (l'utilisation d'IV ou non est detectée grace à mcrypt_get_iv_size($cipher,$mode) alors est-ce celle-ci qui est en tort ? )

EDIT : une constante lors du deuxième beug c'est toujours le mode "stream" qui ne fonctionne pas

EDIT 2 : Solution trouvée, la cause était
les cipher 'arcfour','wake','enigma'
et le mode "stream"
Le problème as était corriger en filtrant les array des ciphers et mode en conséquence Wink
Donc plus d'erreurs.
voilà le code :
Code PHP :

function multi_crypt($data,$key)
{
    $ciphers=mcrypt_list_algorithms();
    $ciphers_good=array();
    $modes=mcrypt_list_modes();
    $modes_good=array();

    foreach($ciphers as $key_cipher=>$cipher)
    {
        if(!in_array($cipher,array('arcfour','wake','enigma')))
        {
            $ciphers_good[]=$cipher;
        }
    }
    $ciphers=$ciphers_good;

    foreach($modes as $key_modes=>$mode)
    {
        if(!in_array($mode,array('stream')))
        {
            $modes_good[]=$mode;
        }
    }
    $modes=$modes_good;

    echo count($ciphers)*count($modes).' possibilités de chiffrement'.'<br />';

    foreach($ciphers as $key_cipher=>$cipher)
    {
        foreach($modes as $key_mode=>$mode)
        {
            $iv_size = mcrypt_get_iv_size($cipher,$mode);
            if($iv_size!==false)
            {
                if(mb_strlen($key)>mcrypt_module_get_algo_key_size($cipher))
                {
                    $key=substr($key, 0,mcrypt_module_get_algo_key_size($cipher)-1);
                }

                if($iv_size>0)
                {
                    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
                    $crypttext = mcrypt_encrypt($cipher, $key, $data,$mode, $iv);
                }
                else
                {
                    $iv=null;
                    $crypttext = mcrypt_encrypt($cipher, $key, $data,$mode);
                }


                echo    'Cipher : '.$key_cipher.' - '.$cipher,
                        ' Mode : '.$key_mode.' - '.$mode,
                        ' Iv : '.$iv_size.' - '.base64_encode($iv),
                        ' Result : '.base64_encode($crypttext),
                        '<br />';
            }
            else
            {
                echo 'une erreur est survenue';
            }
        }
    }
}
multi_crypt('voila c est mon texte secret','jamais tu ne l auras jamais');

 
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (1) -1 (0) Répondre


Messages dans ce sujet
[Php] chiffrement asymétrique avec OpenSSL - par InstinctHack - 16-01-2013, 18h31

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Meilleur mode pour le chiffrement par bloc Serphentas 1 175 08-03-2016, 20h43
Dernier message: Serphentas
  Chiffrement RSA en php et java InstinctHack 3 268 28-06-2013, 10h31
Dernier message: b0fh

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut