Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

HMAC en perl

4 réponses
Avatar
Julien Vehent
Bonjour =E0 tous,

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

Merci,
Julien

----------------------

#! /usr/bin/perl -w

use strict;

##################################
## impl=E9mentation 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 =3D 64; # block size in bytes
print "\ninput HMAC key in base 64 form -> ";
$K =3D decode_base64(<STDIN>);

print "\ninput ASCII data to compute HMAC on -> ";
$text =3D <STDIN>;

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

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

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


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

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

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

print "\n\nHMAC =3D ".unpack("H*", $H)."\n\n";

4 réponses

Avatar
Benoit Izac
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

Avatar
Benoit Izac
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à :
<http://cpan.uwinnipeg.ca/dist/Digest-HMAC>.

--
Benoit Izac

Avatar
Sylvain SF
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.

Avatar
Julien Vehent
On 14 mai, 22:08, "Sylvain SF" wrote:

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.