Nós já publicamos sobre gerar hash criptográfica com a função SHA256 . Então, para entender melhor esse artigo recomendo você ler, se ainda não leu, o outro artigo:
Você vai notar muitas semelhanças com a implementação anterior, a única diferença em si é que a função é diferente, nesse caso usaremos a MD5 .
MD5 é uma função de hash criptograficamente quebrada, mas ainda amplamente usada , produzindo um valor de hash de 128 bits . Embora o MD5 tenha sido inicialmente projetado para ser usado como uma função de hash criptográfica , descobriu-se que ele sofre de extensas vulnerabilidades.
Ela ainda pode ser usado como uma soma de verificação para verificar a integridade dos dados , mas apenas contra corrupção não intencional. Ela permanece adequado para outros fins não criptográficos, por exemplo, para determinar a partição de uma chave específica em um banco de dados particionado e pode ser preferido devido a requisitos computacionais mais baixos do que os algoritmos de hash seguros mais recentes .
Em resumo:
MD2, MD4 e MD5 são recomendados apenas para compatibilidade com aplicativos existentes. Em novas aplicações, SHA-1 ou RIPEMD-160 devem ser preferidos.
Antes de qualquer coisa você precisa instalar a biblioteca OpenSSL, use o gerenciador de pacotes da sua distro para isso, exemplo para sistemas que usam APT:
Observação: Geralmente, a maioria dos sistemas já possuem essa biblioteca instalada.
Para esse exemplo, vamos criar a hash da palavra Terminal Root . Segue o código abaixo:
md5.cpp
Para compilar rode:
A possível e esperada saída será:
Para verificar se está correta use, preterivelmente, o comando printf
:
Você pode simplesmente substituir o DIGEST_LENGTH
(apesar do tamanho serem os mesmos no cabeçalho haverá outra macro), e os nomes das funções para utilizar para MD2
e MD4
(utilizam os cabeçalhos md2.h
e md4.h
,respectivamente , já a SHA256 usa sha.h
) e usar para gerar hash para também essas funções.