DES加密/解密类

using System;

using System.Security.Cryptography;

using System.Text;

/// <summary>

/// DES加密/解密类。

/// LiTianPing

/// </summary>

public class DESEncrypt

{

    public DESEncrypt()

    {

    }



    #region ========加密========



    /// <summary>

    /// 加密

    /// </summary>

    /// <param name="Text"></param>

    /// <returns></returns>

    public static string Encrypt(string Text)

    {

        return Encrypt(Text, "MATICSOFT");

    }

    /// <summary> 

    /// 加密数据 

    /// </summary> 

    /// <param name="Text"></param> 

    /// <param name="sKey"></param> 

    /// <returns></returns> 

    public static string Encrypt(string Text, string sKey)

    {

        DESCryptoServiceProvider des = new DESCryptoServiceProvider();

        byte[] inputByteArray;

        inputByteArray = Encoding.Default.GetBytes(Text);

        des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

        des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

        System.IO.MemoryStream ms = new System.IO.MemoryStream();

        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

        cs.Write(inputByteArray, 0, inputByteArray.Length);

        cs.FlushFinalBlock();

        StringBuilder ret = new StringBuilder();

        foreach (byte b in ms.ToArray())

        {

            ret.AppendFormat("{0:X2}", b);

        }

        return ret.ToString();

    }



    #endregion



    #region ========解密========





    /// <summary>

    /// 解密

    /// </summary>

    /// <param name="Text"></param>

    /// <returns></returns>

    public static string Decrypt(string Text)

    {

        return Decrypt(Text, "MATICSOFT");

    }

    /// <summary> 

    /// 解密数据 

    /// </summary> 

    /// <param name="Text"></param> 

    /// <param name="sKey"></param> 

    /// <returns></returns> 

    public static string Decrypt(string Text, string sKey)

    {

        DESCryptoServiceProvider des = new DESCryptoServiceProvider();

        int len;

        len = Text.Length / 2;

        byte[] inputByteArray = new byte[len];

        int x, i;

        for (x = 0; x < len; x++)

        {

            i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);

            inputByteArray[x] = (byte)i;

        }

        des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

        des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

        System.IO.MemoryStream ms = new System.IO.MemoryStream();

        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

        cs.Write(inputByteArray, 0, inputByteArray.Length);

        cs.FlushFinalBlock();

        return Encoding.Default.GetString(ms.ToArray());

    }



    #endregion





}

 

 

你可能感兴趣的:(des)