zoukankan      html  css  js  c++  java
  • EncryptHelper加密对象-工具类

    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using System.Web.Security;
    
    namespace Common.Utility
    {
        /// <summary>
        /// Author:Kt
        /// Date Created:2011-04-01
        /// Description:加密对象-工具类
        /// </summary>
        public class EncryptHelper
        {
            /// <summary>
            /// AES 解密
            /// </summary>
            /// <param name="content">内容</param>
            /// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
            /// <returns></returns>
            public static string AESDecrypt(string content, string secretKey)
            {
                if (string.IsNullOrEmpty(content)) return null;
                Byte[] toEncryptArray = Convert.FromBase64String(content);
    
                System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(secretKey),
                    Mode = System.Security.Cryptography.CipherMode.ECB,
                    Padding = System.Security.Cryptography.PaddingMode.PKCS7
                };
    
                System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Encoding.UTF8.GetString(resultArray);
            }
    
            /// <summary>
            /// AES 加密
            /// </summary>
            /// <param name="content">内容</param>
            /// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
            /// <returns></returns>
            public static string AESEncrypt(string content, string secretKey)
            {
                byte[] keyArray = UTF8Encoding.UTF8.GetBytes(secretKey);
                byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(content);
    
                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);
            }
    
            /// <summary>
            /// MD5 加密
            /// </summary>
            /// <param name="content">内容</param>
            /// <returns></returns>
            public static string Md5(string content)
            {
                return FormsAuthentication.HashPasswordForStoringInConfigFile(content, "MD5");
            }
    
            /// <summary>
            /// MD5 加密
            /// </summary>
            /// <param name="content">内容</param>
            /// <param name="encode">编码</param>
            /// <returns>签名字符串</returns>
            public static string Md5(string content, Encoding encode)
            {
                var result = new StringBuilder();
                var md5 = new MD5CryptoServiceProvider();
                var bytes = md5.ComputeHash(encode.GetBytes(content));
                foreach (var item in bytes)
                    result.Append(item.ToString("x").PadLeft(2, '0'));
    
                return result.ToString();
            }
    
            /// <summary>
            /// 3DES 解密
            /// </summary>
            /// <param name="content">内容</param>
            /// <param name="secretKey">私钥</param>
            /// <param name="ivs">向量</param>
            /// <returns></returns>
            public static string DESDecrypt(string content, string secretKey, string ivs)
            {
                SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
                mCSP.Mode = CipherMode.CBC;
                mCSP.Padding = PaddingMode.PKCS7;
                mCSP.Key = Encoding.UTF8.GetBytes(secretKey);
                mCSP.IV = Encoding.UTF8.GetBytes(ivs);
                ICryptoTransform ct;
                MemoryStream ms;
                CryptoStream cs;
                byte[] byt;
                ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
                byt = Convert.FromBase64String(content);
                ms = new MemoryStream();
                cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
                cs.Write(byt, 0, byt.Length);
                cs.FlushFinalBlock();
                cs.Close();
                return Encoding.UTF8.GetString(ms.ToArray());
            }
    
            /// <summary>
            /// 3DES 加密
            /// </summary>
            /// <param name="content">内容</param>
            /// <param name="secretKey">私钥</param>
            /// <param name="ivs">向量</param>
            /// <returns></returns>
            public static string DESEncrypt(string content, string secretKey, string ivs)
            {
                SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
                mCSP.Mode = CipherMode.CBC;
                mCSP.Padding = PaddingMode.PKCS7;
                mCSP.Key = Encoding.UTF8.GetBytes(secretKey);
                mCSP.IV = Encoding.UTF8.GetBytes(ivs);
                ICryptoTransform ct;
                MemoryStream ms;
                CryptoStream cs;
                byte[] byt;
                ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
                byt = Encoding.UTF8.GetBytes(content);
                ms = new MemoryStream();
                cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
                cs.Write(byt, 0, byt.Length);
                cs.FlushFinalBlock();
                cs.Close();
                return Convert.ToBase64String(ms.ToArray());
            }
        }
    }
    using System;
    using System.Text;
    
    namespace Common.Utility.Tests
    {
        /// <summary>
        /// 运行示例
        /// </summary>
        internal partial class Program
        {
            private static void Main_EncryptHelper(string[] args)
            {
                string str = "需要加密的字符串12345678";
                string md5_1 = EncryptHelper.Md5(str);
                string md5_2 = EncryptHelper.Md5(str, Encoding.UTF8);
    
                str = "10086";
                string secretKey_AES = Guid.NewGuid().ToString("N");
                string JiaMi = EncryptHelper.AESEncrypt(str, secretKey_AES);
                string JieMi = EncryptHelper.AESDecrypt(JiaMi, secretKey_AES);
    
                string secretKey_DES = "fsT7ObM1nEnrRAGO1djI2YBi";
                string ivs_DES = "GUGlYE1g";
                JiaMi = EncryptHelper.DESEncrypt(str, secretKey_DES, ivs_DES);
                JieMi = EncryptHelper.DESDecrypt(JiaMi, secretKey_DES, ivs_DES);
            }
        }
    }
  • 相关阅读:
    [翻译]在Windows版或MacOS版的Microsoft Edge上安装一个谷歌浏览器拓展
    《C#并发编程经典实例》学习笔记—2.6 任务完成时的处理
    《C#并发编程经典实例》学习笔记—2.5 等待任意一个任务完成 Task.WhenAny
    Visual Studio 2019 发布活动
    创建索引CreateIndex
    Windows 10 安装ElasticSearch(2)- MSI安装ElasticSearch和安装Kibana
    jQuery框架二
    jQuery框架
    JavaScript——二
    作业 5/17
  • 原文地址:https://www.cnblogs.com/Jeely/p/11718995.html
Copyright © 2011-2022 走看看