Em 2 de novembro de 2007, o NIST – National Institute of Standards and Technology anunciou um concurso público para o desenvolvimento de um novo algoritmo de hash criptográfico, chamado SHA-3. Em 31 de outubro de 2008 recebeu 64 candidatos de todo o mundo.
A competição foi divida em três etapas para a escolha do melhor algoritmo, chegando a cinco algoritmos finalistas: BLAKE, Grøstl, JH, Keccak e Skein.
Em 2 de outubro de 2012, após ouvir diversos feedbacks do público e a revisão interna dos candidatos, chegaram ao vencedor. Keccak (pronuncia-se “catch-ack”), colocando um ponto final em uma competição que durou cinco anos!
O algoritmo Keccak foi criado por Guido Bertoni, Joan Daemen, Gilles Van Assche da STMicroelectronics e Michaël Peeters da NXP Semiconductors. A equipe venceu 63 outros algoritmos que o NIST recebeu após a abertura para novos algoritmos candidatos em 2007, quando se pensava que SHA-2, o algoritmo de hash padrão, poderia ser quebrado. Keccak agora será SHA-3 algoritmo de hash do NIST.
O algoritmo Keccak foi muito elogiado devido as suas qualidades únicas, incluindo o seu design elegante e sua capacidade de funcionar bem em muitos dispositivos de computação diferentes, tendo maior desempenho em hardware do que SHA-2 ou qualquer um dos outros finalistas.
Direto na prática
Agora chega de papo e vamos colocar a mão na massa e testar SHA-3. Para começar, você precisa do NuGet Package Manager instalado no seu Visual Studio. Se você já o instalou, crie um novo projeto Windows Forms (caso contrário instale o NuGet Package Manager antes de criar o projeto). Eu nomeie o meu projeto como SHA-3.
Agora vá até o Package Manager Console e execute o seguinte comando:
PM> Install-Package SHA3
O comando vai instalar a versão oficial dos criadores. A referência será criada automaticamente como mostrado aqui:

Crie um formulário como esse:

Para processar a mensagem e retornar o Hash SHA-3 usamos os seguinte método:
string ComputeHashSHA3(string message, int size)
{
try
{
/*
* Iniciamos a classe SHA-3 e passamos o tamanho do hash.
* Os valores aceitos são 224, 256, 384 e 512 bits.
*/
SHA3Managed hash = new SHA3Managed(size);
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
//Guarda os bytes da mensagem
byte[] MessageBytes = encoding.GetBytes(message);
//Computamos o hash da mensagem
byte[] ComputeHashBytes = hash.ComputeHash(MessageBytes);
//Fazemos a conversão para Hexadecimal e retornamos.
StringBuilder x = new StringBuilder();
foreach (var item in ComputeHashBytes)
{
x.Append(item.ToString("x2"));
}
return x.ToString();
}
catch (Exception ex)
{
throw;
}
}
Agora basta chamar o método no evento click do botão e pronto!
private void btnSha3_Click(object sender, EventArgs e)
{
txtSha3.Text = this.ComputeHashSHA3(txtMessage.Text.Trim(), 512);
}
- Você pode acessar o site oficial aqui: http://keccak.noekeon.org/.
- Esse site exibe uma lista com vários testes com SHA-1, SHA-2 e SHA-3: http://www.di-mgt.com.au/sha_testvectors.html
- Download do projeto
Legal né? Bom por hoje é só.
Até a próxima!



