數據安全場景下,常需對敏感字符串進行哈希或可逆加密。本文提供一個静态类 Cryptography,封裝 5 種主流算法的加密/解密方法,參數校驗完善、異常處理統一、代碼即拿即用,適合 .NET Framework / .NET Core 項目直接引用。
| 算法 | 類型 | 密鑰長度要求 | 典型場景 |
|---|---|---|---|
| MD5 | 單向哈希 | 無 | 密碼存儲(建議加鹽)、文件完整性校驗 |
| DES | 對稱加密 | 8 字節 | 大量數據高速加密,安全性一般 |
| 3DES | 對稱加密 | 3×8 字節 | 金融/支付領域,兼容舊系統 |
| RC2 | 對稱加密 | 5-16 字節 | 變長密鑰加密大量數據 |
| AES (Rijndael) | 對稱加密 | 任意(建議16/24/32字節) | 現代標準,高性能高安全,首選 |
public static class Cryptography {
// MD5
public static string MD5Encrypt(string encryptString) { ... }
// DES
public static string DESEncrypt(string encryptString, string encryptKey) { ... }
public static string DESDecrypt(string decryptString, string decryptKey) { ... }
// RC2
public static string RC2Encrypt(string encryptString, string encryptKey) { ... }
public static string RC2Decrypt(string decryptString, string decryptKey) { ... }
// 3DES (三次 DES)
public static string DES3Encrypt(string encryptString, string key1, string key2, string key3) { ... }
public static string DES3Decrypt(string decryptString, string key1, string key2, string key3) { ... }
// AES
public static string AESEncrypt(string encryptString, string encryptKey) { ... }
public static string AESDecrypt(string decryptString, string decryptKey) { ... }
}
Encoding.Default.GetBytes → MemoryStream → CryptoStream(CreateEncryptor/Decryptor) → Write/FlushFinalBlock → Convert.ToBase64String / Encoding.Default.GetString。
{0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};AES 使用 Base64 解碼後的固定 IV。生產環境建議改為隨機 IV 並隨密文輸出,防止重放攻擊。
string.IsNullOrEmpty 及密鑰長度,不符合直接拋出 Exception,避免運行時加密失敗。
DES3Encrypt 依次調用 DESEncrypt(key3) → DESEncrypt(key2) → DESEncrypt(key1);解密順序相反。等效於 TripleDESCryptoServiceProvider,但復用了現有 DES 邏輯。
// MD5
string pwdHash = Cryptography.MD5Encrypt("userPassword123");
// AES (推薦)
string aesKey = "1234567890123456"; // 16字節
string encrypted = Cryptography.AESEncrypt("敏感數據", aesKey);
string decrypted = Cryptography.AESDecrypt(encrypted, aesKey);
// 3DES
string k1 = "12345678", k2 = "abcdefgh", k3 = "87654321";
string tdesEnc = Cryptography.DES3Encrypt("數據", k1, k2, k3);
string tdesDec = Cryptography.DES3Decrypt(tdesEnc, k1, k2, k3);
AesGcm) 或 AES-CBC + HMAC。本類適合快速原型、遺留系統維護、教學演示;正式上線請按上述建議加固。