QQ 命令列登入參數 `PWDHASH` 需經 MD5 雜湊後再 Base64 編碼。`EncodeHash` 類別封裝此邏輯,供登入器呼叫。
public static string PwdHash(string pwd)
{
using (var md5 = MD5.Create())
{
byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(pwd));
return Convert.ToBase64String(hash);
}
}
public static string StringToMD5Hash(string input)
{
using (var md5 = MD5.Create())
{
byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(input));
var sb = new StringBuilder();
foreach (byte b in hash) sb.AppendFormat("{0:x2}", b);
return sb.ToString();
}
}
public static string EncodeBase64(string text)
{
try { return Convert.ToBase64String(Encoding.Default.GetBytes(text)); }
catch { return text; }
}
public static string DecodeBase64(string encodingName, string base64)
{
try { return Encoding.GetEncoding(encodingName).GetString(Convert.FromBase64String(base64)); }
catch { return base64; }
}