`
zxlyecf2
  • 浏览: 129607 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

加密解密帮助类

    博客分类:
  • C#
阅读更多

1.CryptoHelper加密解密帮助类

/// <summary>
    /// 加密解密帮助类
    /// </summary>
    public class CryptoHelper
    {
        private readonly string IV = "SuFjcEmp/TE=";
        private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";

        public CryptoHelper()
        {

        }

        /// <summary>
        /// 获取加密服务类
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;

        }

        /// <summary>
        /// 获取加密后的字符串
        /// </summary>
        /// <param name="inputValue">输入值.</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            // 创建内存流来保存加密后的流
            MemoryStream mStream = new MemoryStream();

            // 创建加密转换流
            CryptoStream cStream = new CryptoStream(mStream,

            provider.CreateEncryptor(), CryptoStreamMode.Write);
            // 使用UTF8编码获取输入字符串的字节。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 将字节写到转换流里面去。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            //将加密后的字节进行64编码。
            return Convert.ToBase64String(ret);
        }

        /// <summary>
        /// 获取解密后的值
        /// </summary>
        /// <param name="inputValue">经过加密后的字符串.</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();
            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            // 创建内存流保存解密后的数据
            MemoryStream msDecrypt = new MemoryStream();

            // 创建转换流。
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
            provider.CreateDecryptor(),
            CryptoStreamMode.Write);

            csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
            csDecrypt.FlushFinalBlock();

            csDecrypt.Close();

            //获取字符串。
            return new UTF8Encoding().GetString(msDecrypt.ToArray());
        }

 2.AES加密解密

//AES加密函数
public static string Encrypt(string toEncrypt) {
    byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
 
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
 
    ICryptoTransform cTransform = rDel.CreateEncryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
 
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
 
//AES解密函数
public static string Decrypt(string toDecrypt) {
    byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
    byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
 
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
 
    ICryptoTransform cTransform = rDel.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
 
    return UTF8Encoding.UTF8.GetString(resultArray);
}

 3.DES加密解密

//加密密钥
        private static byte[] DESKey=new byte[]{11,23,93,102,72,41,18,12};
        //解密密钥
        private static byte[] DESIV=new byte[]{75,158,46,97,78,57,17,36};
 
        public  string Encode(string Encode_String)
        {
            DESCryptoServiceProvider objDES=new DESCryptoServiceProvider();
            MemoryStream objMemoryStream=new MemoryStream();
            CryptoStream objCryptoStream=new CryptoStream(objMemoryStream,objDES.CreateEncryptor(DESKey,DESIV),CryptoStreamMode.Write);
            StreamWriter objStreamWriter=new StreamWriter(objCryptoStream);
            objStreamWriter.Write(Encode_String);
            objStreamWriter.Flush();
            objCryptoStream.FlushFinalBlock();
            objMemoryStream.Flush();
            return Convert.ToBase64String(objMemoryStream.GetBuffer(),0,(int)objMemoryStream.Length);
 
        }
        public  string Decode(string Encode_String)
        {
            DESCryptoServiceProvider objDES=new DESCryptoServiceProvider();
            byte[] Input=Convert.FromBase64String(Encode_String);
            MemoryStream objMemoryStream=new MemoryStream(Input);
            CryptoStream objCryptoStream=new CryptoStream (objMemoryStream,objDES.CreateDecryptor(DESKey,DESIV),CryptoStreamMode.Read);
            StreamReader objStreamReader=new StreamReader(objCryptoStream);
            return objStreamReader.ReadToEnd();
        }

 

2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics