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

 }
    } }
}
文章出处:http://www.cnblogs.com/yiki/archive/2007/08/28/872373.html
 
                     
                    
                 
                    
                 
   
 
    
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号