none
Hash MD5 errado obtido por métodos da .NET Framework RRS feed

  • Pergunta

  • Boa noite,

    Estou a desenvolver uma app multi plataforma e ao fazer testes reparei que a app que desenvolvi em C# estava a dar um resultado diferente das restantes. Fui investigar e descobri que o problema está ao nível de um hash MD5 que estou a gerar.

    Estava a usar a MD5 class (http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs.110).aspx)

    Entretanto pesquisei mais um pouco e no msdn enconrei outra forma de gerar um hash md5:

    http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5cryptoserviceprovider(v=vs.110).aspx

    Fiz uma aplicação de teste onde gerava o md5 da mesma string com os 2 processos e deu-me sempre o mesmo resultado no hash, até que testei com a string que me estava a dar problemas na minha aplicação e... obtive hash diferente utilizando cada um dos métodos.

    Gostaria que me informassem se poderá ser um bug na plataforma .NET, ou porquê que tal está a acontecer.

    A string que me está a dar problemas é a seguinte: -ARG)X?U?­OS+A

    Segundo o exemplo do 1º link obtenho o seguinte hash: 8a2caf0f44055efc03a12f4cec141e87
    Segundo o exemplo do 2º link obtenho o seguinte hash: f19457f577991b71d4bcb00a71668b3f

    Usei o código que está em exemplo em ambas as páginas do msdn para gerar o meu hash.

    Entretanto o segundo link está a gerar-me o hash correto, portanto tenho o problema resolvido, mas deixo o alerta e, caso se trate de um bug, onde posso denunciá-lo? Se não for um bug, porque obtenho este resultado? Não tenho subscrição paga do msdn para ter suporte.


    • Editado César Faria domingo, 12 de outubro de 2014 10:33 clarificação do título
    sábado, 11 de outubro de 2014 23:24

Todas as Respostas

  • Entretanto descobri uma situação nessa string, que poderá ajudar:

    problematicString.ElementAt(0) 45 '-' char
    problematicString.ElementAt(9) 173 '­' char

    Existe um caractere entre o segundo ? e o O (na posição 9) que no visual studio e na aplicação é mostrado como sendo um - mas que aqui na web está a ser mostrado como um caractere vazio.

    Podem ver aqui uma imagem desse caractere numa aplicação de teste que fiz para este problema:
    https://dl.dropboxusercontent.com/u/7983195/MD5problem.PNG

    De qualquer das formas com ou sem esse caractere, o hash MD5 devia ser sempre igual.

    domingo, 12 de outubro de 2014 13:31