using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;

using System.IO;
namespace GetPassWord
{
  
    /// <summary>
    ///DES加解密类
    /// </summary>
    public  class Encryptclass
    {

        /// <summary>
        /// DES解密字符串
        /// </summary>
        /// <returns>解密后的字符串</returns>
        public  string Decrypt(string name, string name2, string password)
        {
            string cipher;
            char[] key = new char[8];
            if (name.Length > 8)
                name = name.Remove(8);
            name.CopyTo(0, key, 0, name.Length);

            char[] iv = new char[8];
            if (name2.Length > 8)
                name2 = name2.Remove(8);
            name2.CopyTo(0, iv, 0, name2.Length);
            if (password == null)
            {
                throw new ArgumentNullException("password");
            }

            SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider();
            serviceProvider.Key = Encoding.ASCII.GetBytes(key);
            serviceProvider.IV = Encoding.ASCII.GetBytes(iv);
            byte[] contentArray = Convert.FromBase64String(password);
            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();
            return cipher;
        }

        /// <summary>
        /// DES加密字符串
        /// </summary>
        /// <returns>加密后的字符串</returns>
        public  string Encrypt(string name, string name2, string password)
        {
            string cipher;
            char[] key = new char[8];
            if (name.Length > 8)
                name = name.Remove(8);
            name.CopyTo(0, key, 0, name.Length);

            char[] iv = new char[8];
            if (name2.Length > 8)
                name2 = name2.Remove(8);
            name2.CopyTo(0, iv, 0, name2.Length);
            if (password == null)
            {
                throw new ArgumentNullException("password");
            }

            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(password);
            streamWriter.Dispose();
            cryptoStream.Dispose();
            byte[] signData = memoryStream.ToArray();
            memoryStream.Dispose();
            serviceProvider.Clear();
            cipher = Convert.ToBase64String(signData);
            return cipher;
        }

    }

}