MD5等加密类 C#算法实现

本文介绍了一种使用C#实现的加密算法,包括MD5、SHA1和DES加密方法。这些方法可用于保护敏感数据,通过将原始数据转换为不可读的形式来增强安全性。

MD5等加密类 C#算法实现

 

<a href='http://www.taskcity.com/?dn=Derek_lee'><img src='http://www.taskcity.com/images/layout/logo_cn.gif' /></a>

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


   public partial  class MD5
    {

        public MD5()
        {
        }
        public static byte[] getbyte(string str)
        {
            return Encoding.Default.GetBytes(str);
        }
        ///DES加密解密 加密byte数组
        /// <param name="strkey"> 密钥不限定位数</param>
        public static string DESEncryptbyte(byte[] plainText, string strkey)
        {
            string encrypted = null;
            byte[] key = getbyte(strkey);
            try
            {
                byte[] inputBytes =plainText;
                byte[] pwdhash = null;
                MD5CryptoServiceProvider hashmd5;
                hashmd5 = new MD5CryptoServiceProvider();
                pwdhash = hashmd5.ComputeHash(key);
                hashmd5 = null;
                TripleDESCryptoServiceProvider tdesProvider = new TripleDESCryptoServiceProvider();
                tdesProvider.Key = pwdhash;
                tdesProvider.Mode = CipherMode.ECB;
                encrypted = Convert.ToBase64String(tdesProvider.CreateEncryptor().TransformFinalBlock(inputBytes, 0, inputBytes.Length));
            }
            catch (Exception e)
            {
                string str = e.Message;
                throw;
            }
            return encrypted;
        }
    //加密字符串
        public  static string DESEncrypt(String plainText, string strkey)
        {
            if (plainText.Trim() == "") return "";
            string encrypted = null;
            byte[] key = getbyte(strkey);
            try
            {
                byte[] inputBytes = ASCIIEncoding.ASCII.GetBytes(plainText);
                byte[] pwdhash = null;
                MD5CryptoServiceProvider hashmd5;
                hashmd5 = new MD5CryptoServiceProvider();
                pwdhash = hashmd5.ComputeHash(key);
                hashmd5 = null;
                TripleDESCryptoServiceProvider tdesProvider = new TripleDESCryptoServiceProvider();
                tdesProvider.Key = pwdhash;
                tdesProvider.Mode = CipherMode.ECB;
                encrypted = Convert.ToBase64String(tdesProvider.CreateEncryptor().TransformFinalBlock(inputBytes, 0, inputBytes.Length));
            }
            catch (Exception e)
            {
                string str = e.Message;
                throw;
            }
            return encrypted;
        }
      
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="encryptedString"></param>
        /// <param name="strkey">密钥</param>
        /// <returns></returns>
        public static string DESDecrypt(string encryptedString, string strkey)
        {
            if (encryptedString.Trim() == "") return "";
            string decyprted = null;
            byte[] inputBytes = null;
            byte[] key = getbyte(strkey);
            try
            {
                inputBytes = Convert.FromBase64String(encryptedString);
                byte[] pwdhash = null;
                MD5CryptoServiceProvider hashmd5;
                hashmd5 = new MD5CryptoServiceProvider();
                pwdhash = hashmd5.ComputeHash(key);
                hashmd5 = null;
                TripleDESCryptoServiceProvider tdesProvider = new TripleDESCryptoServiceProvider();
                tdesProvider.Key = pwdhash;
                tdesProvider.Mode = CipherMode.ECB;
                decyprted = ASCIIEncoding.ASCII.GetString(tdesProvider.CreateDecryptor().TransformFinalBlock(inputBytes, 0, inputBytes.Length));
            }
            catch (Exception e)
            {
                string str = e.Message;
                throw;
            }
            return decyprted;
        }
        //替换非法的危险字符
        public string ReplaceDangerCode(string Temp)
        {
            Temp = Temp.Replace("'", "");
            Temp = Temp.Replace("/"", "");
            Temp = Temp.Replace("or", "");
            Temp = Temp.Replace("&", "");
            Temp = Temp.Replace("*", "");
            Temp = Temp.Replace("select ", "");
            Temp = Temp.Replace("insert ", "");
            Temp = Temp.Replace("delete ", "");
            Temp = Temp.Replace("count(", "");
            Temp = Temp.Replace("drop table ", "");
            Temp = Temp.Replace("update ", "");
            Temp = Temp.Replace("truncate ", "");
            Temp = Temp.Replace("asc(", "");
            Temp = Temp.Replace("mid(", "");
            Temp = Temp.Replace("char(", "");
            Temp = Temp.Replace("xp_cmdshell", "");
            Temp = Temp.Replace("exec master", "");
            Temp = Temp.Replace("net localgroup administrators", "");
            Temp = Temp.Replace(" and ", "");
            Temp = Temp.Replace("net user", "");
            Temp = Temp.Replace(" or ", "");
            return Temp;
        }

       /// <summary>
       /// shal加密
       /// </summary>
       /// <param name="bt"></param>
       /// <returns></returns>
        public static string SHALEncryptbyte(byte[] bt)
        {
            SHA1 s = new SHA1CryptoServiceProvider();
            return BitConverter.ToString(s.ComputeHash(bt));
        }
        public static string SHALEncrypstr(string str)
        {
            string reStr;
            byte[] bts = ASCIIEncoding.ASCII.GetBytes(str);
            SHA1 s = new SHA1CryptoServiceProvider();
            reStr = BitConverter.ToString(s.ComputeHash(bts));
            return reStr;
        }
  //MD5加密
  public static string MD5_Encrypstr(string str)
  {
   string reStr;
   byte[] bts = ASCIIEncoding.ASCII.GetBytes(str);
   MD5CryptoServiceProvider MD5_OBJ = new MD5CryptoServiceProvider();
   reStr = BitConverter.ToString(MD5_OBJ.ComputeHash(bts));
   return reStr;
  }

    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

derek_lee1021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值