Calcul de hash SHA-1

Calcul de hash SHA-1 - Divers - Programmation

Marsh Posté le 02-03-2004 à 12:31:13    

Bonjour,
 
Je dois utiliser des hash SHA-1 pour un projet sur lequel je travaille.
 
On le digest est un tableau de byte, que je balance dans IntToHex de Delphi et j'en obtient la représentation en chaine en base 16.
C'est comme ça que ça se fait en MD4/5 mais visiblement pas en SHA-1 car j'ai trouvé des hashes du type : sha1:LMFXTUQSWWB6JSKQOMJSXCDBFHDJKNVP
 
Savez vous comment on obtient de tels hash à partir du digest sha-1 ?

Reply

Marsh Posté le 02-03-2004 à 12:31:13   

Reply

Marsh Posté le 02-03-2004 à 16:49:37    

Up...

Reply

Marsh Posté le 02-03-2004 à 17:00:58    

ben avec l'algorithme du même nom

Reply

Marsh Posté le 02-03-2004 à 17:33:55    

Oui mais je sais pas comment l'avoir "sous cette forme"...
 
j'ai un beau "array of byte" en sortie ...

Reply

Marsh Posté le 04-03-2004 à 11:53:55    

Kyle_Katarn a écrit :

Bonjour,
 
j'ai trouvé des hashes du type : sha1:LMFXTUQSWWB6JSKQOMJSXCDBFHDJKNVP
 
Savez vous comment on obtient de tels hash à partir du digest sha-1 ?


 
On encode le sha-1 en base 32 [ABCDEFGHIJKLMNOPQRSTUVWXYZ234567] et non pas en base 16.

Reply

Marsh Posté le 04-03-2004 à 11:54:33    

cai nul la base 32, la base 64 d'accord mais 32 ?


Message édité par Taz le 04-03-2004 à 11:54:47
Reply

Marsh Posté le 04-03-2004 à 12:04:42    

Merci

Reply

Marsh Posté le 04-03-2004 à 12:10:34    

la nuit après avoir répondu, j'ai pensé à base64 dans mon sommeil, mais quand je suis revenu, je me suis dit, non, c'est pas ça, y a pas de minuscule :D  
 
 
c'est quoi l'intéret de la base 32 ? ah oui 32*5 ça fait 160:D

Reply

Marsh Posté le 04-03-2004 à 12:26:23    

Comment est ce que je peux convertir en Delphi un tableau de byte en chaine base 32 ?

Reply

Marsh Posté le 04-03-2004 à 12:28:55    

ah ouais làa ça se corse :D

Reply

Marsh Posté le 04-03-2004 à 12:28:55   

Reply

Marsh Posté le 04-03-2004 à 12:30:46    

Ben pas trop je pense mais je pense que vous le ferez de manière plus optimale que moi...

Reply

Marsh Posté le 04-03-2004 à 12:31:20    

(étant donné que le calcul doit être fait de manière assez répétitive dans mon appli, je préfèrerai prendre une BONNE solution)

Reply

Marsh Posté le 04-03-2004 à 12:31:58    

le truc c'est que lire par paquets de 5bits, c'est un peu compliqué :D ou alors doit y avoir une astuce pour faire ça

Reply

Marsh Posté le 04-03-2004 à 12:34:18    

Reply

Marsh Posté le 04-03-2004 à 12:37:41    

Merci beaucoup !

Reply

Marsh Posté le 04-03-2004 à 13:13:28    

Kyle_Katarn a écrit :

Comment est ce que je peux convertir en Delphi un tableau de byte en chaine base 32 ?


 
En delphi, je sais pas mais en pseudo-code C/C++ , chez les trolls, on fait quelque chose comme ça:
 
// gsBase32Chars, une chaîne contenant ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
 
// bytes, le tableau à encoder
// len, sa longueur
 
// word, un unsigned byte
// i, nIndex, des compteurs
// Base32Buf, le résultat
 
 

Code :
  1. for(i = 0, nIndex = 0; i < len ; )
  2. {
  3.   if (nIndex > 3) {
  4.     word = (bytes[i] & (0xFF >> nIndex));
  5.     nIndex = (nIndex + 5) % 8;
  6.     word <<= nIndex;
  7.     if (i < len - 1)  word |= bytes[i + 1] >> (8 - nIndex);
  8.   i++;
  9.   } else {
  10.     word = (bytes[i] >> (8 - (nIndex + 5))) & 0x1F;
  11.     nIndex = (nIndex + 5) % 8;
  12.     if (nIndex == 0) i++;
  13.   }
  14.   Base32Buff += (char) gsBase32Chars[word];
  15. }


 
Pour les explications et les optimisations, faut demander à un non troll, au copaing taz par exemple (s'il ne trouve pas ça trop compliqué).


Message édité par docmaboul le 04-03-2004 à 13:14:55
Reply

Marsh Posté le 04-03-2004 à 13:18:32    

Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed