IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Cryptage SHA-1 etc....


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 33
    Points : 19
    Points
    19
    Par défaut Cryptage SHA-1 etc....
    Bonjour , je cherche a codé des algorithme du type md5 ou SHA-1 etc....
    mais connaissance en cryptage sont très faible ....
    avez vous des site a me donner
    merci de votre

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    En fin de semaine, j'ai fais implémenter le SHA-1 en Javascript pour me pratiquer (c'est pas parfait, mais bon).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
          function sha1(msg)
          {
              // Initialisation des constantes
              var H0 = 0x67452301;
              var H1 = 0xEFCDAB89;
              var H2 = 0x98BADCFE;
              var H3 = 0x10325476;
              var H4 = 0xC3D2E1F0;
              var w = new Array(80);
              var l = msg.length;
              var temp;
     
              // Tableau de mots de 32bits : 16 cases de suite = 1 block
              var words = new Array();
              for(i=0; i < l-3; i += 4 )
              {
                  j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 | msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
                  words.push(j);
              }
     
              // Additions des bits manquants
              switch( l % 4 )
              {
                  case 0:
                      i = 0x080000000;
                      break;
     
                  case 1:
                      i = msg.charCodeAt(l-1)<<24 | 0x0800000;
                      break;
     
                  case 2:
                      i = msg.charCodeAt(l-2)<<24 | msg.charCodeAt(l-1)<<16 | 0x08000;
                      break;
     
                  case 3:
                      i = msg.charCodeAt(l-3)<<24 | msg.charCodeAt(l-2)<<16 | msg.charCodeAt(l-1)<<8 | 0x80;
                      break;
              }
     
              words.push(i);
     
              // Completion avec des zeros
              while( (words.length % 16) != 14 )
              {
                  words.push(0);
              }
     
              // Addition de la taille du message en bits sur 64 bits
              words.push(l>>>29);
              words.push((l<<3)&0x0ffffffff);
     
     
              // Pour chaques bloques de 16 mots:
              for(block=0; block<words.length; block+=16)
              {
                  // On remplit le tableau w
                  for(i=0; i<16; i++)
                  {
                      w[i] = words[block + i];
                  }
     
                  for(i=16; i<80; i++)
                  {
                      w[i] = leftrotate(w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16], 1);
                  }
     
                  // Initialisation de A, B, C, D et E
                  A = H0;
                  B = H1;
                  C = H2;
                  D = H3;
                  E = H4;
     
                  // Mise a jour des variables A, B, C, D et E
                  for(i=0; i<80; i++)
                  {
                      temp = leftrotate(A, 5) + F(i,B,C,D) + E + K(i) + w[i];
     
                      E = D;
                      D = C;
                      C = leftrotate(B, 30);
                      B = A;
                      A = temp;
                  }
     
                  // Calcul des valeurs de hachage intermédiaires
                  H0 = (H0 + A) & 0x0ffffffff;
                  H1 = (H1 + B) & 0x0ffffffff;
                  H2 = (H2 + C) & 0x0ffffffff;
                  H3 = (H3 + D) & 0x0ffffffff;
                  H4 = (H4 + E) & 0x0ffffffff;
              }
     
              return int2shex(H0) + int2shex(H1) + int2shex(H2) + int2shex(H3) + int2shex(H4);
          }
     
          // Convertion d'un entier sur 32 bits en chaine hexadecimal
          function int2shex(val)
          {
              var shex = '';
              var i;
              var v;
     
              for(i=7; i>=0; i-=1)
              {
                  v = (val>>>(i*4)) & 0x0f;
                  shex += v.toString(16);
              }
     
              return shex;
          }
     
          // opération de rotation binaire vers la gauche
          function leftrotate(x, n)
          {
              return ( x<<n ) | (x>>>(32-n));
          }
     
          // Fontion K(t)
          function K(t)
          {
              if(0 <= t && t <= 19) return 0x5A827999;
              else if(20 <= t && t <= 39) return 0x6ED9EBA1;
              else if(40 <= t && t <= 59) return 0x8F1BBCDC;
              else if(60 <= t && t <= 79) return 0xCA62C1D6;
              else alert('Erreur dans la fonction K(' + t + '): 0 <= t <= 79');
          }
     
          function F(t, x, y, z)
          {
              if(0 <= t && t <= 19) return (x & y) | (~x & z);
              else if(20 <= t && t <= 39) return x ^ y ^ z;
              else if(40 <= t && t <= 59) return (x & y) | (x & z) | (y & z);
              else if(60 <= t && t <= 79) return x ^ y ^ z;
              else alert('Erreur dans la fonction F(' + t + ', ' + x + ', ' + y + ', ' + z + '): 0 <= t <= 79');
          }

    Je me suis un peux inspirer de certains codes. Et pour le comprendre, Wikipedia

    http://fr.wikipedia.org/wiki/SHA-1
    http://fr.wikipedia.org/wiki/Sp%C3%A9cifications_SHA-1
    http://en.wikipedia.org/wiki/SHA_hash_functions


    Pour ce qui est du MD5, j'ai aussi essayer, mais j'ai une erreur (je n'obtien pas les bon hash).


    En espérant que cela puisse t'aider un peu,
    XeL

  3. #3
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    juste pour le vocabulaire... SHA-1 et md5 ne sont pas des fonctions de cryptage ( chiffrement en francais ) mais des fonctions de hashage. Une fonction de chiffrement doit avoir un clef en parametre, ce qui n'est pas le cas de SHA-1 et md5.

    C'etait juste une petit precision car beaucoup de personnes confondent les deux.

  4. #4
    Membre habitué Avatar de Kenji
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 143
    Points
    143
    Par défaut
    Si je peux rajouter une p'tite précision

    Il faut aussi noter que leurs rôles sont différents,une fonction de hachage servant principalement à garantir l'intégrité d'un message.

Discussions similaires

  1. Problème cryptage SHA 1
    Par bombers dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2014, 06h55
  2. Cryptage {SHA} pour comparaison LDAP
    Par Tortue95 dans le forum Sécurité
    Réponses: 4
    Dernier message: 05/01/2012, 11h44
  3. [WD10] Cryptage SHA 256
    Par mnssylvain dans le forum WinDev
    Réponses: 12
    Dernier message: 22/06/2009, 05h28
  4. Cryptage dans Mysql avec SHA avec Base64
    Par wodel dans le forum SUSE
    Réponses: 0
    Dernier message: 29/04/2009, 12h57
  5. Réponses: 6
    Dernier message: 08/01/2006, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo