MD5 hash diferente em Ubuntu e Windows

1. MD5 hash diferente em Ubuntu e Windows

Enderson Demaria Carlos
endybh

(usa Ubuntu)

Enviado em 19/02/2013 - 08:34h

Pessoal bom dia,

Sou novo no forum e também no mundo linux, meu contato com o linux já é antigo, mas comecei a mexer para valer agora. Sou desenvolvedor C# .NET
a alguns longos anos, mas estou com um problema bem inusitado em minha mão.

Estou desenvolvendo um sistema web de contas de um jogo online, onde o usuário cria seu login para entrar no jogo. E estou desenvolvendo em C#, porque será um sistema grande que irá genrenciar muita coisa do usuário. Eu tenho uma página simples em php que cria a conta do usuário e a mesma utiliza encriptação MD5 da seguinte forma

$Salt = Base64_encode(md5($usuario.$senha));

percebo que isso é uma função pronta do php para gerar o md5 do login concatenado com a senha e tenho dois métodos em c# para realizar as mesmas operações que está da seguinte forma:

public string getMD5Hash(string str)
{
byte[] btyScr = ASCIIEncoding.ASCII.GetBytes(str);
MD5CryptoServiceProvider objMd5 = new MD5CryptoServiceProvider();
byte[] btyRes = objMd5.ComputeHash(btyScr);
int intTotal = (Convert.ToInt32(btyRes.Length * 2) + Convert.ToInt32((btyRes.Length / 8)));
StringBuilder strRes = new StringBuilder(intTotal);
int intI = 0;

for (intI = 0; intI <= btyRes.Length - 1; intI++)
{
strRes.Append(BitConverter.ToString(btyRes, intI, 1));
}

return strRes.ToString().TrimEnd(new char[] { ' ' }).ToLower();

}
public string EncodeBase64(string str)
{
byte[] encodeBytes = UnicodeEncoding.UTF8.GetBytes(str);
return Convert.ToBase64String(encodeBytes);
}

Instalei o Apach2Triad no windows para testar ambos os códigos imprimindo na tela do navegador o Hash Base64 gerado por ambos e para o usuário e senha que informei ambos os códigos geraram o mesmo hash base64. depois deste teste fiz minha aplicação conectar ao MySQL no meu servidor Ubuntu Server 10 que é de fato o servidor do jogo. Ao executar a Webapplication em C# e tentar criar um login e senha gerando o hash ele grava porém não funciona quando tento logar no jogo.

Em seguida fiz um teste diferente, joguei o código que imprime o hash em php no servidor apache no meu ubuntu quando executei este código em php, ele me imprimiu o hash gerado, depois executei a aplicação em C# rodando no meu IIS do Windows e o mesmo imprimiu o hash gerado e EUREKA! Os Hashs gerados são diferentes, tentei alterar no meu código C# de UTF8 para ASCII e continua gerando hash diferente do php executado no Ubuntu. Então, contei esta história para fazer um pergunta.

O Linux a geração de Hash MD5 com Base64 Encode é diferente para windows?

Porque quando rodo o mesmo código php no Apach2Triad no windows os hashs tanto em C# e php são iguais para usuário e senha informado. outro detalhe, criei uma pa'gina de criação de login em php e subi ela para o meu ubuntu, criei um login e depois loguei no jogo que por sinal funcionou perfeitamente. Então tou entendendo que o problema é de S.O. quanto a geração de hash. Alguém poderia me dar uma orientação?


  


2. Re: MD5 hash diferente em Ubuntu e Windows

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 19/02/2013 - 11:51h

Sei q a compilação do php para windows e linux é diferenre, tanto q as versões para windows sempre saem atrasadas, e nao estao no site oficial.

Recomendo usar hash no código Sql (se se banco permitir, o postgres permite)


3. Re: MD5 hash diferente em Ubuntu e Windows

Enderson Demaria Carlos
endybh

(usa Ubuntu)

Enviado em 19/02/2013 - 16:34h

Obrigado por responder,

vou tentar construir uma procedure no MySQL que gere o hash e testar, caso não

funcione, terei que desenvolver todo o sistema em php.

vlw


4. Re: MD5 hash diferente em Ubuntu e Windows

Joca (Altemir Braz Dantas Junior)
jocajuni

(usa Debian)

Enviado em 04/03/2013 - 18:56h

Segue as function prontas do proprio mysql

https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html


exemplo:


$sql = "SELECT 1 FROM user WHERE usuario='".$_POST["usuario"]."'" AND senha='".md5($_POST["senha"])."'";
//ou caso vc queira so pegar um md5

$sql = "SELECT md5('".$_POST["dado"]."')";

SELECT md5('oi') => a2e63ee01401aaeca78be023dfbb8c59




[]s
Altemir Braz Dantas Junior
Jocajuni






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts