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?