Dias atrais precisei criar um algoritmo para verificar se um form realmente esta vindo de uma pagina especifica, usando MD5 para isso como hoje existem alguns sites com dicionarios inteiros de hash que facilita a vida dos malas, pensei em concatenar a string com outra que seria secreta para ficar diferente.

Mais para minha surpresa pesquisei no site do php sobre as funções de hash nativas e encontrei um recurso bem interessante chamado HMAC ( Hash-based Message Authentication Code ) que permite você adicionar um código de autenticação ao hash final.

Como ele é bem simples, irei colocar abaixo um codigo em php e mais abaixo a saida do codigo:

 

<?php

// varios  - md5, sha1, crc32 e ripemd160 com e sem senha em hmac

echo "<br><b>Algoritmo MD5</b><br>";

echo hash('md5','pedro','');

echo "<br>";

echo hash_hmac('md5','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo SHA1</b><br>";

echo hash('sha1','pedro','');

echo "<br>";

echo hash_hmac('sha1','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo crc32</b><br>";

echo hash('crc32','pedro','');

echo "<br>";

echo hash_hmac('crc32','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo ripemd160</b><br>";

echo hash('ripemd160','pedro','');

echo "<br>";

echo hash_hmac('ripemd160','pedro','senha');

echo "<br>";

?>

saida do codigo acima:

Algoritmo MD5
c6cc8094c2dc07b700ffcc36d64e2138
a1d018ffaf490f6a5b92742ef3ccd173
Algoritmo SHA1

4410d99cefe57ec2c2cdbd3f1d5cf862bb4fb6f8
5c82ffca9902349d22bf36ab133b40cbb2f2ea76
Algoritmo crc32

e86f00aa
0f6fd579
Algoritmo ripemd160

7755874530352e4d9fce481fbf92ac0e46581b16
a2a25fa6891b36bbd4761cf84ad01a7a0ceee458