HMAC en perl

Le
Julien Vehent
Bonjour à tous,

J'ai fait une implémentation rapide de l'algo HMAC en perl. Une petite
relecture serait la bienvenue, si certains d'entre vous ont 2 minutes
à y consacrer..

Merci,
Julien

-

#! /usr/bin/perl -w

use strict;

##################################
## implémentation HMAC RFC 2104 ##
## j. vehent - mai 2008 ##
##################################

use Digest::SHA1 qw(sha1);
use MIME::Base64;

my ($K, $text, $H); # 'K' the key, 'text' the data to compute the hmac
on, 'H' the HMAC
my $B = 64; # block size in bytes
print "input HMAC key in base 64 form -> ";
$K = decode_base64(<STDIN>);

print "input ASCII data to compute HMAC on -> ";
$text = <STDIN>;

# if key length > block size, reset key to sha1(key)
$K = sha1($K) if length($K) > $B;

# ipad = key xor '0x36' b times
my $k_ipad = $K ^ (chr(0x36) x $B);

# opad = key xor '0x5c' b times
my $k_opad = $K ^ (chr(0x5c) x $B);


# HMAC = sha1((key xor '0x5c'*B) || sha1((key xor '0x36'*B) || text))
# with || is concatenation

$H = sha1($k_ipad.$text);

$H = sha1($k_opad.$H);

print "HMAC = ".unpack("H*", $H)."";
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Benoit Izac
Le #6625741
Bonjour,

le 14/05/2008 à 13:08, Julien Vehent a écrit dans le message

J'ai fait une implémentation rapide de l'algo HMAC en perl. Une petite
relecture serait la bienvenue, si certains d'entre vous ont 2 minutes
à y consacrer.....


Je ne connais pas HMAC mais ce qui est me choque dans ton programme
c'est qu'il ne fonctionne que pour un texte ($text) d'une ligne, c'est
voulu ?

--
Benoit Izac

Benoit Izac
Le #6626761
Bonjour,

le 14/05/2008 à 13:08, Julien Vehent a écrit dans le message

J'ai fait une implémentation rapide de l'algo HMAC en perl. Une petite
relecture serait la bienvenue, si certains d'entre vous ont 2 minutes
à y consacrer.....


Je ne connais pas HMAC mais ce qui est me choque dans ton programme
c'est qu'il ne fonctionne que pour un texte ($text) d'une ligne, c'est
voulu ?

J'ajouterai que ce que tu veux faire existe déjà :

--
Benoit Izac

Sylvain SF
Le #6627081
Julien Vehent wrote on 14/05/2008 13:08:

J'ai fait une implémentation rapide de l'algo HMAC en perl. Une petite
relecture serait la bienvenue, si certains d'entre vous ont 2 minutes
à y consacrer.....


pour une relecture de Perl ce n'est pas le bon groupe.

juste 2 points:
- HMAC est générique et n'a aucune raison d'être lié à SHA1.
- la RFC 2104 contient des vecteurs de tests, valider ton code
avec est plus pertinent que d'attendre des relectures.

Sylvain.

Julien Vehent
Le #6676081
On 14 mai, 22:08, "Sylvain SF"
juste 2 points:
- HMAC est générique et n'a aucune raison d'être lié à SHA1.


Exact, mais mon implémentation se limitera à SHA1, ce qui correspond à
un besoin particulier.

- la RFC 2104 contient des vecteurs de tests, valider ton code
  avec est plus pertinent que d'attendre des relectures.


Merci pour le pointeur, j'étais passé à coté. Je suis en train de
corriger le tout.

Publicité
Poster une réponse
Anonyme