Boas a todos,
Estou com um problema em recrear uma password gerada em C#, num projecto online que esta ao publico quando um utilizador se regista a password passa pela função:
private static string ToMD5Hash(string inputString)
{
using (MD5 md5 = MD5.Create())
{
byte[] data = Encoding.Unicode.GetBytes(inputString);
byte[] hash = md5.ComputeHash(data);
return Convert.ToBase64String(hash);
}
}
O meu problema é que estou a trabalhar em uma versão offline que irá ter a possibilidade de fazer sync com a versão online e não estou a conseguir a mesma password em as3(adobe air).
Por exampo a password 1234 depois de passar pela função do C# fica DwN1hMmef9T0+MWVUPj1Bw==.
A minha funç~co de teste em as3 é assim:
private function encode():void
{
var ba:ByteArray = new ByteArray();
ba.writeMultiByte("1234","unicode");
var str:String = MD5.hash(ba.toString());
var ba2:ByteArray = new ByteArray();
ba2.writeMultiByte(str.toString(),"unicode");
var encoder:Base64Encoder = new Base64Encoder();
encoder.encodeUTFBytes(ba2.toString());
trace(encoder.toString());
}
Quando executo ba.writeMultiByte("1234","unicode"); tenho o mesmo bytearray que no c# mas apartir dai já não, não consigo perceber se o meu problema é no ba.toString() ou no MD5.hash para o MD5 estou a usar a lib as3corelib
Agradeço desde já qualquer ajuda.
Alex
Estou com um problema em recrear uma password gerada em C#, num projecto online que esta ao publico quando um utilizador se regista a password passa pela função:
private static string ToMD5Hash(string inputString)
{
using (MD5 md5 = MD5.Create())
{
byte[] data = Encoding.Unicode.GetBytes(inputString);
byte[] hash = md5.ComputeHash(data);
return Convert.ToBase64String(hash);
}
}
O meu problema é que estou a trabalhar em uma versão offline que irá ter a possibilidade de fazer sync com a versão online e não estou a conseguir a mesma password em as3(adobe air).
Por exampo a password 1234 depois de passar pela função do C# fica DwN1hMmef9T0+MWVUPj1Bw==.
A minha funç~co de teste em as3 é assim:
private function encode():void
{
var ba:ByteArray = new ByteArray();
ba.writeMultiByte("1234","unicode");
var str:String = MD5.hash(ba.toString());
var ba2:ByteArray = new ByteArray();
ba2.writeMultiByte(str.toString(),"unicode");
var encoder:Base64Encoder = new Base64Encoder();
encoder.encodeUTFBytes(ba2.toString());
trace(encoder.toString());
}
Quando executo ba.writeMultiByte("1234","unicode"); tenho o mesmo bytearray que no c# mas apartir dai já não, não consigo perceber se o meu problema é no ba.toString() ou no MD5.hash para o MD5 estou a usar a lib as3corelib
Agradeço desde já qualquer ajuda.
Alex