MD5和SHA1加密,DES加密和解密,Base64编码解码。

引用命名空间

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


MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();        
 string md5Str = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
 return md5Str;

 

string strpwd1=FormsAuthentication.HashPasswordForStoringInConfigFile("pwd", "SHA1");

string strpwd2=FormsAuthentication.HashPasswordForStoringInConfigFile("pwd", "MD5");

 

 

 

/// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密的字符串</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> 
        public static string DESEncrypt(string encryptString)
         {
                 try
                {
                         byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
                         byte[] rgbIV = rgbKey;
                         byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                         DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                         MemoryStream mStream = new MemoryStream();
                         CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                         cStream.Write(inputByteArray, 0, inputByteArray.Length);
                         cStream.FlushFinalBlock();
                         cStream.Close();
                         return Convert.ToBase64String(mStream.ToArray());
                 }
                 catch
                {
                         return encryptString;
                 }
         }

         /// <summary>
        /// DES解密字符串
        /// </summary>
        /// <param name="decryptString">待解密的字符串</param>
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns> 
        public static string DESDecrypt(string decryptString)
         {
                 try
                {
                         byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
                         byte[] rgbIV = rgbKey;
                         byte[] inputByteArray = Convert.FromBase64String(decryptString);
                         DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                         MemoryStream mStream = new MemoryStream();
                         CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                         cStream.Write(inputByteArray, 0, inputByteArray.Length);
                         cStream.FlushFinalBlock();
                         cStream.Close();
                         return Encoding.UTF8.GetString(mStream.ToArray());
                 }
                 catch
                {
                         return decryptString;
                 }
         }

         /// <summary>
        /// 将普通字符串编码为BASE64字串
        /// </summary>
        /// <param name="str">源字符串</param>
        /// <returns></returns> 
        public static string Base64Encode(string str)
         {
                 return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
         }

         /// <summary>
        /// 解码BASE64字串
        /// </summary>
        /// <param name="str">Base64字串</param>
        /// <returns></returns> 
        public static string Base64Decode(string base64Str)
         {
                 return Encoding.UTF8.GetString(Convert.FromBase64String(base64Str));
         }


 

UTF-8编码与解码

//对字符串进行UTF-8编码
    public static string strUTF(string str)
    {
        return HttpUtility.UrlEncode(str);
    }
//对字符串进行UTF-8解码
    public static string strDecode(string str)
    {
        return HttpUtility.UrlDecode(str);
    }


 

/// <summary>
    /// 加密
    /// </summary>
    /// <param name="str">要加密的</param>
    /// <param name="key">钥匙</param>
    /// <returns></returns>
    public static string Encode(string str, string key)
    {
        System.Security.Cryptography.DESCryptoServiceProvider provider = new System.Security.Cryptography.DESCryptoServiceProvider();
        provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
        provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
        byte[] bytes = Encoding.UTF8.GetBytes(str);
        MemoryStream stream = new MemoryStream();
        System.Security.Cryptography.CryptoStream stream2 = new System.Security.Cryptography.CryptoStream(stream, provider.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
        stream2.Write(bytes, 0, bytes.Length);
        stream2.FlushFinalBlock();
        StringBuilder builder = new StringBuilder();
        foreach (byte num in stream.ToArray())
        {
            builder.AppendFormat("{0:X2}", num);
        }
        stream.Close();
        return builder.ToString();
    }

    /// <summary>
    /// 解密
    /// </summary>
    /// <param name="str">要解密的</param>
    /// <param name="key">钥匙</param>
    /// <returns></returns>
    public static string Decode(string str, string key)
    {
        System.Security.Cryptography.DESCryptoServiceProvider provider = new System.Security.Cryptography.DESCryptoServiceProvider();
        provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
        provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
        byte[] buffer = new byte[str.Length / 2];
        for (int i = 0; i < (str.Length / 2); i++)
        {
            int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
            buffer[i] = (byte)num2;
        }
        MemoryStream stream = new MemoryStream();
        System.Security.Cryptography.CryptoStream stream2 = new System.Security.Cryptography.CryptoStream(stream, provider.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
        stream2.Write(buffer, 0, buffer.Length);
        stream2.FlushFinalBlock();
        stream.Close();
        return Encoding.GetEncoding("UTF-8").GetString(stream.ToArray());
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值