using System;using System.IO;using System.Security.Cryptography;using System.Text;namespace BS.Utility{public class MySecurity{#region 构造函数public MySecurity(){}#endregion#region ( 0 )Rijndael算法private SymmetricAlgorithm mobjCryptoService= new RijndaelManaged(); private static string Key= "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7 ";/// <summary>/// 获得密钥/// </summary>/// <returns> 密钥</returns>private byte[] GetLegalKey(){string sTemp = Key;mobjCryptoService.GenerateKey();byte[] bytTemp = mobjCryptoService.Key;int KeyLength = bytTemp.Length;if (sTemp.Length > KeyLength)sTemp = sTemp.Substring(0, KeyLength);else if (sTemp.Length < KeyLength)sTemp = sTemp.PadRight(KeyLength, ' ');return ASCIIEncoding.ASCII.GetBytes(sTemp);}/// <summary>/// 获得初始向量IV/// </summary>/// <returns> 初试向量IV </returns>{string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk ";mobjCryptoService.GenerateIV();byte[] bytTemp = mobjCryptoService.IV;int IVLength = bytTemp.Length;if (sTemp.Length > IVLength)sTemp = sTemp.Substring(0, IVLength);else if (sTemp.Length < IVLength)sTemp = sTemp.PadRight(IVLength, ' ');return ASCIIEncoding.ASCII.GetBytes(sTemp);}/// <summary>/// 加密方法/// </summary>/// <param name= "Source "> 待加密的串</param>/// <returns> 经过加密的串</returns>public string RijndaelEncrypt(string Source){byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);MemoryStream ms = new MemoryStream();mobjCryptoService.Key = GetLegalKey();mobjCryptoService.IV = GetLegalIV();ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length);cs.FlushFinalBlock();ms.Close();byte[] bytOut = ms.ToArray();return Convert.ToBase64String(bytOut);}/// <summary>/// 解密方法/// </summary>/// <param name= "Source "> 待解密的串</param>/// <returns> 经过解密的串</returns>public string RijndaelDecrypt(string Source){byte[] bytIn = Convert.FromBase64String(Source);MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);mobjCryptoService.Key = GetLegalKey();mobjCryptoService.IV = GetLegalIV();ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader sr = new StreamReader(cs);return sr.ReadToEnd();}#endregion#region ( 1 )Base64与UTF8混用public string BUEncrypt( string bb ){byte[] by=new byte[bb.Length];by=System.Text.Encoding.UTF8.GetBytes( bb );string r=Convert.ToBase64String( by );return r;}public string BUDecrypt( string aa ){byte[] by=Convert.FromBase64String( aa );string r=Encoding.UTF8.GetString( by );return r;}#endregion#region ( 2 )倒序加1与顺序减1(中文支持不好)public string AddEncrypt( string rs ) //倒序加1加密{byte[] by=new byte[rs.Length];for( int i=0;i <=rs.Length-1;i++ ){by[i]=( byte )( ( byte )rs[i]+1 );}rs= " ";for( int i=by.Length-1;i> =0;i-- ){rs+=( ( char )by[i] ).ToString( );}return rs;}public string AddDecrypt( string rs ) //顺序减1解码{byte[] by=new byte[rs.Length];for( int i=0;i <=rs.Length-1;i++ ){by[i]=( byte )( ( byte )rs[i]-1 );}rs= " ";for( int i=by.Length-1;i> =0;i-- ){rs+=( ( char )by[i] ).ToString( );}return rs;}#endregion#region ( 3 )固定密钥算法private Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 88}; private Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};//字符串加密public string SKeyEncrypt(string strText){try{DESCryptoServiceProvider des = new DESCryptoServiceProvider();Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64),CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();return Convert.ToBase64String(ms.ToArray());}catch(Exception ex){return ex.Message;}}//字符串解密public string SKeyDecrypt(string strText){Byte[] inputByteArray = new byte[strText.Length];try{DESCryptoServiceProvider des = new DESCryptoServiceProvider();inputByteArray = Convert.FromBase64String(strText);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64),CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();System.Text.Encoding encoding = System.Text.Encoding.UTF8;return encoding.GetString(ms.ToArray());}catch(Exception ex){return ex.Message;}}#endregion#region ( 4 )DES算法public static byte[] DESKey = new byte[] {0x82, 0xBC, 0xA1, 0x6A, 0xF5, 0x87, 0x3B, 0xE6, 0x59, 0x6A, 0x32, 0x64, 0x7F, 0x3A, 0x2A, 0xBB, 0x2B, 0x68, 0xE2, 0x5F, 0x06, 0xFB, 0xB8, 0x2D, 0x67, 0xB 3, 0x55, 0x19, 0x4E, 0xB8, 0xBF, 0xDD };/// <summary>/// DES加密/// </summary>/// <param name= "strSource "> 待加密字串</param>/// <param name= "key "> 32位Key值</param>/// <returns> 加密后的字符串</returns>public string DESEncrypt(string strSource){return DESEncrypt(strSource, DESKey);}private string DESEncrypt(string strSource,byte[] key){SymmetricAlgorithm sa = Rijndael.Create();sa.Key = key;sa.Mode= CipherMode.ECB;sa.Padding = PaddingMode.Zeros;MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);byte[] byt = Encoding.Unicode.GetBytes(strSource);cs.Write(byt, 0, byt.Length);cs.FlushFinalBlock();cs.Close();return Convert.ToBase64String(ms.ToArray());}/// <summary>/// DES解密/// </summary>/// <param name= "strSource "> 待解密的字串</param>/// <param name= "key "> 32位Key值</param>/// <returns> 解密后的字符串</returns>public string DESDecrypt(string strSource){return DESDecrypt(strSource, DESKey);}private string DESDecrypt(string strSource,byte[] key){SymmetricAlgorithm sa = Rijndael.Create();sa.Key = key;sa.Mode = CipherMode.ECB;sa.Padding = PaddingMode.Zeros;ICryptoTransform ct = sa.CreateDecryptor();byte[] byt = Convert.FromBase64String(strSource);MemoryStream ms = new MemoryStream(byt);CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read);StreamReader sr = new StreamReader(cs, Encoding.Unicode);return sr.ReadToEnd();}#endregion}}public sealed class Secret{public static TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();public Secret(){//// TODO: 在此处添加构造函数逻辑//}/// 加密函数/// </summary>public static string EncryptString(string thisEncode){string encrypted;byte[] Code = ASCIIEncoding.ASCII.GetBytes(thisEncode);encrypted = Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(Code, 0,Code.Length));return encrypted;}/// <summary>/// 解密函数/// </summary>public static string DecryptString(string thisDecode){string decrypted;byte[] Code = Convert.FromBase64String(thisDecode);decrypted = ASCIIEncoding.ASCII.GetString(des.CreateDecryptor().TransformFinalBlock(Code, 0,Code.Length));return decrypted;}//加密一个给定的字符串,strEncrKey是一个字符串做为加密算子public string DesEncrypt(string strText, string strEncrKey){if(strEncrKey == String.Empty){strEncrKey = "songxiud ";}byte[] byKey=null;byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};try{byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,strEncrKey.Length));DESCryptoServiceProvider des = new DESCryptoServiceProvider();byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();return Convert.ToBase64String(ms.ToArray());}catch(System.Exception error){return "error: " +error.Message+ "\r ";}}//解密一个给定的字符串,sDecrKey是一个字符串做为解密算子,public string DesDecrypt(string strText,string sDecrKey){if(sDecrKey == " "){sDecrKey = "songxiud ";}byte[] byKey = null;byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};try{byte[] inputByteArray = Convert.FromBase64String(strText);byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8));DESCryptoServiceProvider des = new DESCryptoServiceProvider();//inputByteArray = Convert.FromBase64String(strText);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();System.Text.Encoding encoding = new System.Text.UTF8Encoding();return encoding.GetString(ms.ToArray());}catch(System.Exception error){return "error: "+error.Message+ "\r ";}}//加密一个文件public void DesEncrypt(string m_InFilePath,string m_OutFilePath,string strEncrKey){byte[] byKey=null;byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};try{byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8));FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read);FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write);fout.SetLength(0);byte[] bin = new byte[100];long rdlen = 0;long totlen = fin.Length;int len;DES des = new DESCryptoServiceProvider();CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);while(rdlen < totlen){len = fin.Read(bin, 0, 100);encStream.Write(bin, 0, len);rdlen = rdlen + len;}encStream.Close();fout.Close();fin.Close();}catch{}}//解密一个文件public void DesDecrypt(string m_InFilePath,string m_OutFilePath,string sDecrKey){byte[] byKey = null;byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};try{byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8));FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read);FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write);fout.SetLength(0);byte[] bin = new byte[100];long rdlen = 0;long totlen = fin.Length;int len;DES des = new DESCryptoServiceProvider();CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);while(rdlen < totlen){len = fin.Read(bin, 0, 100);encStream.Write(bin, 0, len);rdlen = rdlen + len;}encStream.Close();fout.Close();fin.Close();}catch{}}//public string MD5Encrypt(string strText){MD5 md5 = new MD5CryptoServiceProvider();byte[] result = puteHash(System.Text.Encoding.Default.GetBytes(strText));return System.Text.Encoding.Default.GetString(result);}//public string MD5Decrypt(string strText){MD5 md5 = new MD5CryptoServiceProvider();byte[] result = md5.TransformFinalBlock(System.Text.Encoding.Default.GetBytes(strText),0,strText.Length);return System.Text.Encoding.Default.GetString(result);}}有用[0]板砖[0]#6楼级:#7楼级:#8楼级:#9楼级:#10级:。