加密解密算法收藏

1、MD5加密解密

    不可逆加密:

    需要引用命名空间:

     using System.Security.Cryptography;
    using System.Text;
    using System.Web.Security;

        /// <summary>

        /// MD5 64位加密

        /// </summary>

        /// <param name="Sourcein">需要加密的字符串</param>

        /// <returns></returns>

        public static String MD5(String Sourcein)

        {

            MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();

            byte[] bytes = Encoding.UTF8.GetBytes(Sourcein);

            return Convert.ToBase64String(provider.ComputeHash(bytes));

        }





        /// <summary>

        /// MD5 32位加密

        /// </summary>

        /// <param name="Sourcein">需要加密的字符串</param>

        /// <returns></returns>

        public static String MD5_32(String Sourcein)

        {

            return FormsAuthentication.HashPasswordForStoringInConfigFile(Sourcein, "MD5");

        }

    加密解密对:

       

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



        /// <summary>

        /// 加密

        /// </summary>

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

        /// <returns></returns>

        public static string Encrypt(string Text)

        {

            return Encrypt(Text, "key");//key:加解密密钥

        }

        /// <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, "key");//key:加解密密钥

        }

        /// <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 

 2.RSA 加密解密

  需要引用的命名空间

   using System;
   using System.Text;
   using System.Security.Cryptography;

  

        #region RSA 加密解密



        #region RSA 的密钥产生



        /// <summary>

        /// RSA 的密钥产生 产生私钥 和公钥 

        /// </summary>

        /// <param name="xmlKeys"></param>

        /// <param name="xmlPublicKey"></param>

        public void RSAKey(out string xmlKeys, out string xmlPublicKey)

        {

            System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

            xmlKeys = rsa.ToXmlString(true);

            xmlPublicKey = rsa.ToXmlString(false);

        }

        #endregion



        #region RSA的加密函数

        //############################################################################## 

        //RSA 方式加密 

        //说明KEY必须是XML的行式,返回的是字符串 

        //在有一点需要说明!!该加密方式有 长度 限制的!! 

        //############################################################################## 



        //RSA的加密函数  string

        public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString)

        {



            byte[] PlainTextBArray;

            byte[] CypherTextBArray;

            string Result;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

            rsa.FromXmlString(xmlPublicKey);

            PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString);

            CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);

            Result = Convert.ToBase64String(CypherTextBArray);

            return Result;



        }

        //RSA的加密函数 byte[]

        public string RSAEncrypt(string xmlPublicKey, byte[] EncryptString)

        {



            byte[] CypherTextBArray;

            string Result;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

            rsa.FromXmlString(xmlPublicKey);

            CypherTextBArray = rsa.Encrypt(EncryptString, false);

            Result = Convert.ToBase64String(CypherTextBArray);

            return Result;



        }

        #endregion



        #region RSA的解密函数

        //RSA的解密函数  string

        public string RSADecrypt(string xmlPrivateKey, string m_strDecryptString)

        {

            byte[] PlainTextBArray;

            byte[] DypherTextBArray;

            string Result;

            System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

            rsa.FromXmlString(xmlPrivateKey);

            PlainTextBArray = Convert.FromBase64String(m_strDecryptString);

            DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);

            Result = (new UnicodeEncoding()).GetString(DypherTextBArray);

            return Result;



        }



        //RSA的解密函数  byte

        public string RSADecrypt(string xmlPrivateKey, byte[] DecryptString)

        {

            byte[] DypherTextBArray;

            string Result;

            System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

            rsa.FromXmlString(xmlPrivateKey);

            DypherTextBArray = rsa.Decrypt(DecryptString, false);

            Result = (new UnicodeEncoding()).GetString(DypherTextBArray);

            return Result;



        }

        #endregion



        #endregion



        #region RSA数字签名



        #region 获取Hash描述表

        //获取Hash描述表 

        public bool GetHash(string m_strSource, ref byte[] HashData)

        {

            //从字符串中取得Hash描述 

            byte[] Buffer;

            System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");

            Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource);

            HashData = MD5.ComputeHash(Buffer);



            return true;

        }



        //获取Hash描述表 

        public bool GetHash(string m_strSource, ref string strHashData)

        {



            //从字符串中取得Hash描述 

            byte[] Buffer;

            byte[] HashData;

            System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");

            Buffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource);

            HashData = MD5.ComputeHash(Buffer);



            strHashData = Convert.ToBase64String(HashData);

            return true;



        }



        //获取Hash描述表 

        public bool GetHash(System.IO.FileStream objFile, ref byte[] HashData)

        {



            //从文件中取得Hash描述 

            System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");

            HashData = MD5.ComputeHash(objFile);

            objFile.Close();



            return true;



        }



        //获取Hash描述表 

        public bool GetHash(System.IO.FileStream objFile, ref string strHashData)

        {



            //从文件中取得Hash描述 

            byte[] HashData;

            System.Security.Cryptography.HashAlgorithm MD5 = System.Security.Cryptography.HashAlgorithm.Create("MD5");

            HashData = MD5.ComputeHash(objFile);

            objFile.Close();



            strHashData = Convert.ToBase64String(HashData);



            return true;



        }

        #endregion



        #region RSA签名

        //RSA签名 

        public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref byte[] EncryptedSignatureData)

        {



            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPrivate);

            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);

            //设置签名的算法为MD5 

            RSAFormatter.SetHashAlgorithm("MD5");

            //执行签名 

            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);



            return true;



        }



        //RSA签名 

        public bool SignatureFormatter(string p_strKeyPrivate, byte[] HashbyteSignature, ref string m_strEncryptedSignatureData)

        {



            byte[] EncryptedSignatureData;



            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPrivate);

            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);

            //设置签名的算法为MD5 

            RSAFormatter.SetHashAlgorithm("MD5");

            //执行签名 

            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);



            m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData);



            return true;



        }



        //RSA签名 

        public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref byte[] EncryptedSignatureData)

        {



            byte[] HashbyteSignature;



            HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature);

            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPrivate);

            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);

            //设置签名的算法为MD5 

            RSAFormatter.SetHashAlgorithm("MD5");

            //执行签名 

            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);



            return true;



        }



        //RSA签名 

        public bool SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature, ref string m_strEncryptedSignatureData)

        {



            byte[] HashbyteSignature;

            byte[] EncryptedSignatureData;



            HashbyteSignature = Convert.FromBase64String(m_strHashbyteSignature);

            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPrivate);

            System.Security.Cryptography.RSAPKCS1SignatureFormatter RSAFormatter = new System.Security.Cryptography.RSAPKCS1SignatureFormatter(RSA);

            //设置签名的算法为MD5 

            RSAFormatter.SetHashAlgorithm("MD5");

            //执行签名 

            EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);



            m_strEncryptedSignatureData = Convert.ToBase64String(EncryptedSignatureData);



            return true;



        }

        #endregion



        #region RSA 签名验证



        public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, byte[] DeformatterData)

        {



            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPublic);

            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);

            //指定解密的时候HASH算法为MD5 

            RSADeformatter.SetHashAlgorithm("MD5");



            if (RSADeformatter.VerifySignature(HashbyteDeformatter, DeformatterData))

            {

                return true;

            }

            else

            {

                return false;

            }



        }



        public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, byte[] DeformatterData)

        {



            byte[] HashbyteDeformatter;



            HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter);



            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPublic);

            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);

            //指定解密的时候HASH算法为MD5 

            RSADeformatter.SetHashAlgorithm("MD5");



            if (RSADeformatter.VerifySignature(HashbyteDeformatter, DeformatterData))

            {

                return true;

            }

            else

            {

                return false;

            }



        }



        public bool SignatureDeformatter(string p_strKeyPublic, byte[] HashbyteDeformatter, string p_strDeformatterData)

        {



            byte[] DeformatterData;



            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPublic);

            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);

            //指定解密的时候HASH算法为MD5 

            RSADeformatter.SetHashAlgorithm("MD5");



            DeformatterData = Convert.FromBase64String(p_strDeformatterData);



            if (RSADeformatter.VerifySignature(HashbyteDeformatter, DeformatterData))

            {

                return true;

            }

            else

            {

                return false;

            }



        }



        public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, string p_strDeformatterData)

        {



            byte[] DeformatterData;

            byte[] HashbyteDeformatter;



            HashbyteDeformatter = Convert.FromBase64String(p_strHashbyteDeformatter);

            System.Security.Cryptography.RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();



            RSA.FromXmlString(p_strKeyPublic);

            System.Security.Cryptography.RSAPKCS1SignatureDeformatter RSADeformatter = new System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA);

            //指定解密的时候HASH算法为MD5 

            RSADeformatter.SetHashAlgorithm("MD5");



            DeformatterData = Convert.FromBase64String(p_strDeformatterData);



            if (RSADeformatter.VerifySignature(HashbyteDeformatter, DeformatterData))

            {

                return true;

            }

            else

            {

                return false;

            }



        }





        #endregion





        #endregion

 

  

你可能感兴趣的:(加密解密)