一个对称加密、解密的方法C#工具类

8/3/2015来源:C#应用人气:2396

一个对称加密、解密的方法C#工具类
using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Security.Cryptography;namespace CMD.EDI{    public class EncryptHandler    {        /// <summary>        /// 加密字符串        /// </summary>        public static string Encrypt(string passWord, string cleartext)        {            string password2 = "Ahbool";            string cipher;            char[] key = new char[8];            if (password.Length > 8)            {                password = password.Remove(8);            }            password.CopyTo(0, key, 0, password.Length);            char[] iv = new char[8];            if (password2.Length > 8)            {                password2 = password2.Remove(8);            }            password2.CopyTo(0, iv, 0, password2.Length);            if (cleartext == null)            {                return string.Empty;            }            SymmetricAlgorithm servicePRovider = new DESCryptoServiceProvider();            serviceProvider.Key = Encoding.ASCII.GetBytes(key);            serviceProvider.IV = Encoding.ASCII.GetBytes(iv);            MemoryStream memoryStream = new MemoryStream();            CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateEncryptor(), CryptoStreamMode.Write);            StreamWriter streamWriter = new StreamWriter(cryptoStream);            streamWriter.Write(cleartext);            streamWriter.Dispose();            cryptoStream.Dispose();            byte[] signData = memoryStream.ToArray();            memoryStream.Dispose();            serviceProvider.Clear();            cipher = Convert.ToBase64String(signData);            return cipher;        }        /// <summary>        /// 解密字符串        /// </summary>        public static string Decrypt(string password, string ciphertext)        {            string password2 = "Ahbool";            string cipher = string.Empty;            try            {                char[] key = new char[8];                if (password.Length > 8)                {                    password = password.Remove(8);                }                password.CopyTo(0, key, 0, password.Length);                char[] iv = new char[8];                if (password2.Length > 8)                {                    password2 = password2.Remove(8);                }                password2.CopyTo(0, iv, 0, password2.Length);                if (ciphertext == null)                {                    return cipher;                }                SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider();                serviceProvider.Key = Encoding.ASCII.GetBytes(key);                serviceProvider.IV = Encoding.ASCII.GetBytes(iv);                byte[] contentArray = Convert.FromBase64String(ciphertext);                MemoryStream memoryStream = new MemoryStream(contentArray);                CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateDecryptor(), CryptoStreamMode.Read);                StreamReader streamReader = new StreamReader(cryptoStream);                cipher = streamReader.ReadToEnd();                streamReader.Dispose();                cryptoStream.Dispose();                memoryStream.Dispose();                serviceProvider.Clear();            }            catch (Exception ex)            {                throw new SystemException("密钥错误,数据包解密失败.");            }            return cipher;        }    }}