C# でハッシュ化されたパスワードを再作成する際に問題があります。オンライン プロジェクトでは、ユーザーが登録プロセスを実行すると、この関数を渡した後にパスワードが保存されます。
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);
}
}
ある時点でオンライン バージョンと同期するオフライン バージョンに取り組んでいますが、AS3 (Adobe Air) で同じ結果を再現できません。たとえば、C# コードに渡された後のパスワード「1234」は、「DwN1hMmef9T0+MWVUPj1Bw==」になります。
誰かが私を助けることができますか?
私のAS3コードは次のようなものです:
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());
}
私が行うと、C#ba.writeMultiByte("1234","unicode");
とまったく同じになりますが、新しいとは異なります。ByteArray
MD5.hash(ba.toString());
ByteArray