C# 加密解密算法 .
1 、方法一 (不可逆加密) public string EncryptPassword( string PasswordString, string PasswordFormat ) { string encryptPassword = null ; if (PasswordFormat = " SHA1 " ) { encryptPassword = FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString , " SHA1 " ); } elseif (PasswordFormat = " MD5 " ) { encryptPassword = FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString , " MD5 " ); } return encryptPassword ; } 2 、方法二 (可逆加密) public interface IBindesh { string encode( string str); string decode( string str); } public class EncryptionDecryption : IBindesh { public string encode( string str) { string htext = "" ; for ( int i = 0 ; i < str.Length; i ++ ) { htext = htext + ( char ) (str[i] + 10 - 1 * 2 ); } return htext; } public string decode( string str) { string dtext = "" ; for ( int i = 0 ; i < str.Length; i ++ ) { dtext = dtext + ( char ) (str[i] - 10 + 1 * 2 ); } return dtext; } 3 、方法三 (可逆加密) const string KEY_64 = " VavicApp " ; // 注意了,是8个字符,64位 const string IV_64 = " VavicApp " ; public string Encode( string data) { byte [] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte [] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); int i = cryptoProvider.KeySize; MemoryStream ms = new MemoryStream(); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst); sw.Write(data); sw.Flush(); cst.FlushFinalBlock(); sw.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0 , ( int )ms.Length); } public string Decode( string data) { byte [] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte [] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte [] byEnc; try { byEnc = Convert.FromBase64String(data); } catch { return null ; } DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(byEnc); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read); StreamReader sr = new StreamReader(cst); return sr.ReadToEnd(); } 4 、MD5不可逆加密 (32位加密) public string GetMD5( string s, string _input_charset) { /**/ /**/ /**/ /// <summary> /// 与ASP兼容的MD5加密算法 /// </summary> MD5 md5 = new MD5CryptoServiceProvider(); byte [] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s)); StringBuilder sb = new StringBuilder( 32 ); for ( int i = 0 ; i < t.Length; i ++ ) { sb.Append(t[i].ToString( " x " ).PadLeft( 2 , ' 0 ')); } return sb.ToString(); } (16位加密) public static string GetMd5Str( string ConvertString) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4 , 8 ); t2 = t2.Replace( " - " , "" ); return t2; } 5 、加解文本文件 // 加密文件 private static void EncryptData(String inName, String outName, byte [] desKey, byte [] desIV) { // Create the file streams to handle the input and output files. FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read); FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); fout.SetLength( 0 ); // Create variables to help with read and write. byte [] bin = new byte [ 100 ]; // This is intermediate storage for the encryption. long rdlen = 0 ; // This is the total number of bytes written. long totlen = fin.Length; // This is the total length of the input file. int len; // This is the number of bytes to be written at a time. DES des = new DESCryptoServiceProvider(); CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write); // Read from the input file, then encrypt and write to the output file. while (rdlen < totlen) { len = fin.Read(bin, 0 , 100 ); encStream.Write(bin, 0 , len); rdlen = rdlen + len; } encStream.Close(); fout.Close(); fin.Close(); } // 解密文件 private static void DecryptData(String inName, String outName, byte [] desKey, byte [] desIV) { // Create the file streams to handle the input and output files. FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read); FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); fout.SetLength( 0 ); // Create variables to help with read and write. byte [] bin = new byte [ 100 ]; // This is intermediate storage for the encryption. long rdlen = 0 ; // This is the total number of bytes written. long totlen = fin.Length; // This is the total length of the input file. int len; // This is the number of bytes to be written at a time. DES des = new DESCryptoServiceProvider(); CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write); // Read from the input file, then encrypt and write to the output file. while (rdlen < totlen) { len = fin.Read(bin, 0 , 100 ); encStream.Write(bin, 0 , len); rdlen = rdlen + len; } encStream.Close(); fout.Close(); fin.Close(); } 6 、 using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO; namespace Component { public class Security { public Security() { } // 默认密钥向量 private static byte [] Keys = { 0x12 , 0x34 , 0x56 , 0x78 , 0x90 , 0xAB , 0xCD , 0xEF } ; /**/ /**/ /**/ /**/ /**/ /**/ /**/ /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString"> 待加密的字符串 </param> /// <param name="encryptKey"> 加密密钥,要求为8位 </param> /// <returns> 加密成功返回加密后的字符串,失败返回源串 </returns> public static string EncryptDES( string encryptString, string encryptKey) { try { byte [] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring( 0 , 8 )); byte [] rgbIV = Keys; byte [] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0 , inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } /**/ /**/ /**/ /**/ /**/ /**/ /**/ /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString"> 待解密的字符串 </param> /// <param name="decryptKey"> 解密密钥,要求为8位,和加密密钥相同 </param> /// <returns> 解密成功返回解密后的字符串,失败返源串 </returns> public static string DecryptDES( string decryptString, string decryptKey) { try { byte [] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte [] rgbIV = Keys; byte [] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0 , inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } } }