我在重新创建在 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());
}
当我这样做时,ba.writeMultiByte("1234","unicode");
我得到的结果与ByteArray
C# 中的完全一样,但是当我这样做时MD5.hash(ba.toString());
,新ByteArray
的就不同了。