首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實作 QQ 自動登入器(三):MD5 與 Base64 加密工具類

     編輯:關於C語言

加密需求背景

QQ 命令列登入參數 `PWDHASH` 需經 MD5 雜湊後再 Base64 編碼。`EncodeHash` 類別封裝此邏輯,供登入器呼叫。

核心方法

1. `pwdHash`:MD5 → Base64(登入專用)


public static string PwdHash(string pwd)
{
    using (var md5 = MD5.Create())
    {
        byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(pwd));
        return Convert.ToBase64String(hash);
    }
}
  • 編碼採 UTF-8,確保中文密碼一致性。
  • 回傳標準 Base64 字串,直接用於命令列參數。

2. `StringToMD5Hash`:32 位十六進位 MD5


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();
    }
}

3. `EncodeBase64` / `DecodeBase64`:通用 Base64 編解碼


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; }
}
  • 編碼名參數支援任意 `Encoding`(UTF-8、GB2312 等)。
  • 異常回退原字串,避免中斷流程。

安全性提醒

  • MD5 已不適用於密碼儲存(碰撞攻擊、彩虹表),僅用於此舊版 QQ 協定相容。
  • 現代系統應用 PBKDF2/Argon2/bcrypt + 鹽值儲存密碼雜湊。
  • Base64 非加密,僅編碼,傳輸敏感資料需 TLS。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved