c# 加密解密帮助类

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

namespace Utils
{
    /// 
    /// 密码加密解密操作相关类
    /// 
    public class PassWordHelper
    {
        
        #region MD5 - 32 加密

        /// 
        /// MD5 - 32加密
        /// 
        /// 待加密字段
        /// 
        public string Md5(string source)
        {
            MD5 md5 = MD5.Create();
            byte[] btStr = Encoding.UTF8.GetBytes(source);
            byte[] hashStr = md5.ComputeHash(btStr);
            StringBuilder pwd = new StringBuilder();
            foreach (byte bStr in hashStr) { pwd.Append(bStr.ToString("x2")); }
            return pwd.ToString();
        }

        /// 
        /// 加盐MD5 -32 加密
        /// 
        /// 待加密字段
        /// 盐巴字段
        /// 
        public string Md5Salt(string source, string salt)
        {
            return salt.IsEmpty() ? source.Md5() : (source + "" + salt + "").Md5();
        }

        #endregion

        #region DES 加密解密

        /// 
        /// DES 字符串型加密
        /// 
        /// 待加密字段
        /// 8位密钥值
        /// 8位加密辅助向量
        /// 类似:xQ969nexy964SXhkTuekUQ==
        public string DesStr(string source, string keyVal, string ivVal)
        {
            try
            {
                byte[] btKey = Encoding.UTF8.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal);
                byte[] btIv = Encoding.UTF8.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal);
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                using (MemoryStream ms = new MemoryStream())
                {
                    byte[] inData = Encoding.UTF8.GetBytes(source);
                    try
                    {
                        using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
                        {
                            cs.Write(inData, 0, inData.Length);
                            cs.FlushFinalBlock();
                        }
                        return Convert.ToBase64String(ms.ToArray());
                    }
                    catch
                    {
                        return source;
                    }
                }
            }
            catch { return "DES加密出错"; }
        }

        /// 
        /// DES 字符串型解密
        /// 
        /// 待解密字段
        /// 8位密钥值
        /// 8位加密辅助向量
        /// 
        public string UnDesStr(string source, string keyVal, string ivVal)
        {
            byte[] btKey = Encoding.UTF8.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal);
            byte[] btIv = Encoding.UTF8.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal);
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            using (MemoryStream ms = new MemoryStream())
            {
                byte[] inData = Convert.FromBase64String(source);
                try
                {
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
                    {
                        cs.Write(inData, 0, inData.Length);
                        cs.FlushFinalBlock();
                    }
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
                catch
                {
                    return source;
                }
            }  
        }

        /// 
        /// DES MAC地址型加密
        /// 
        /// 待加密字段
        /// 8位密钥值
        /// 8位加密辅助向量
        /// 
        public string DesMac(string source, string keyVal, string ivVal)
        {
            try
            {
                byte[] data = Encoding.UTF8.GetBytes(source);
                var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };
                var desencrypt = des.CreateEncryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return BitConverter.ToString(result);
            }
            catch { return "转换出错!"; }
        }

        /// 
        /// DES MAC地址型解密
        /// 
        /// 待解密字段
        /// 8位密钥值
        /// 8位加密辅助向量
        /// 
        public string UnDesMac(string source, string keyVal, string ivVal)
        {
            try
            {
                string[] sInput = source.Split("-".ToCharArray());
                byte[] data = new byte[sInput.Length];
                for (int i = 0; i < sInput.Length; i++)
                {
                    data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
                }
                var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };
                var desencrypt = des.CreateDecryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return Encoding.UTF8.GetString(result);
            }
            catch { return "解密出错!"; }
        }

        #endregion

        #region RSA 加密解密

        //密钥对
        private const string PublicRsaKey = @"xe";
        private const string PrivateRsaKey = @"xe

p

qdpdqiqd
"; /// /// RSA 加密 /// /// 待加密字段 /// public string Rsa(string source) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PublicRsaKey); var cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), true); return Convert.ToBase64String(cipherbytes); } /// /// RSA解密 /// /// 待解密字段 /// public string UnRsa(string source) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PrivateRsaKey); var cipherbytes = rsa.Decrypt(Convert.FromBase64String(source), true); return Encoding.UTF8.GetString(cipherbytes); } #endregion } }

 

转载于:https://www.cnblogs.com/yanlovehan/p/5338033.html

你可能感兴趣的:(c# 加密解密帮助类)