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

ASP.NET 通用字串處理工具類 (StringHelper)

     編輯:ASP.NET 基礎

整理常用字串操作方法至單一靜態類別,涵蓋移除空白、截斷、輸入過濾、大小寫轉換、DES/MD5 加密等功能,方便專案直接引用。

核心方法總覽

方法說明
RemoveBlank移除字串中所有空白字元 (ASCII 32)
CutStr(str, len, max)依指定長度換行,超過最大長度截斷並加「...」
CutStr(str, len)依指定長度換行,不限制總長度
PartSubString(str, len)超過長度截斷並加「...」
InputText(text, maxLen)輸入過濾:去除 HTML 標籤、多餘空白、SQL 單引號轉義
StringToLower(str)手動將大寫字母轉小寫 (教學用,實務用 ToLower())
Encode(str, keyIndex)DES 加密 (ECB 模式,固定三組金鑰)
Decode(str, keyIndex)DES 解密
GetMD5_32(str)MD5 32 位小寫雜湊
GetMd5_16(str)MD5 16 位雜湊 (取中間 8 bytes)

關鍵方法實作節錄

輸入過濾:InputText (防 XSS / SQL Injection 輔助)

public static string InputText(string text, int maxLength)
{
    if (string.IsNullOrEmpty(text)) return string.Empty;
    text = text.Trim();
    if (text.Length > maxLength) text = text.Substring(0, maxLength);

    // 合併多餘空白
    text = Regex.Replace(text, @"\s{2,}", " ");
    // 移除 

標籤轉換為換行 text = Regex.Replace(text, @"(<\s*[bB][rR]\s*/?\s*>)+|(<\s*[pP](.|\n)*?>)", "\n"); // 移除   text = Regex.Replace(text, @"(\s*&[nN][bB][sS][pP];\s*)+", " "); // 移除所有其他 HTML 標籤 text = Regex.Replace(text, @"<(.|\n)*?>", string.Empty); // 單引號轉義 (簡易 SQL 參數化前處理) text = text.Replace("'", "''"); return text; }

DES 加密/解密 (GB2312 編碼)

private static readonly string[] DesKeys = {
    "BookT@#+!NumBq2",
    "MagaZine@(21&*ID5",
    "ThesisDSHI}._Y"
};

public static string Encode(string str, int keyIndex)
{
    string key = DesKeys[keyIndex].Substring(0, 8);
    using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
    {
        des.Key = Encoding.ASCII.GetBytes(key);
        des.IV = Encoding.ASCII.GetBytes(key);
        byte[] data = Encoding.GetEncoding("GB2312").GetBytes(str);
        using (MemoryStream ms = new MemoryStream())
        using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
        {
            cs.Write(data, 0, data.Length);
            cs.FlushFinalBlock();
            return BitConverter.ToString(ms.ToArray()).Replace("-", "");
        }
    }
}

public static string Decode(string str, int keyIndex)
{
    string key = DesKeys[keyIndex].Substring(0, 8);
    using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
    {
        des.Key = Encoding.ASCII.GetBytes(key);
        des.IV = Encoding.ASCII.GetBytes(key);
        byte[] data = new byte[str.Length / 2];
        for (int i = 0; i < data.Length; i++)
            data[i] = Convert.ToByte(str.Substring(i * 2, 2), 16);
        using (MemoryStream ms = new MemoryStream())
        using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
        {
            cs.Write(data, 0, data.Length);
            cs.FlushFinalBlock();
            return Encoding.GetEncoding("GB2312").GetString(ms.ToArray());
        }
    }
}

MD5 雜湊

public static string GetMD5_32(string input)
{
    using (MD5 md5 = MD5.Create())
    {
        byte[] hash = md5.ComputeHash(Encoding.Unicode.GetBytes(input));
        return BitConverter.ToString(hash).Replace("-", "").ToLower();
    }
}

public static string GetMd5_16(string input)
{
    using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
    {
        byte[] hash = md5.ComputeHash(Encoding.Default.GetBytes(input));
        // 取中間 8 bytes (索引 4~11)
        return BitConverter.ToString(hash, 4, 8).Replace("-", "");
    }
}

安全性提醒

  • DES 已過時,新專案請改用 AES (Rijndael),金鑰長度 128/192/256 bits。
  • MD5 不適合密碼儲存,請使用 PBKDF2、bcrypt 或 Argon2 並加鹽。
  • InputText 僅為輔助過濾,**務必搭配參數化查詢** 才能有效防禦 SQL Injection。
  • 編碼建議統一使用 UTF-8,避免 GB2312 造成跨平台亂碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved