`
xylw
  • 浏览: 57984 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
文章分类
社区版块
存档分类
最新评论

ASP.NET AES、DES加密

 
阅读更多
首先,引入

using System.Security.Cryptography;
/// <summary>   
    /// AES、DES加解密工具类   
    /// </summary>   
    public class EncryptUtil   
    {   
        private static readonly string AESKEY = "GHYU80DV3465QSFG";//16或者32位   
  
        //private static readonly string DESKEY = ConfigurationManager.AppSettings["DESKEY"].Trim();   
        private static readonly string DESKEY = "PORG56JK";//8位   
  
        /// <summary>   
        /// AES加密   
        /// </summary>   
        /// <param name="data">要加密的字符串</param>   
        /// <returns>加密后的字符串</returns>   
        public static string EncryptAES(string data)   
        {   
            try  
            {   
                RijndaelManaged aes = new RijndaelManaged();   
                byte[] bData = UTF8Encoding.UTF8.GetBytes(data);   
                aes.Key = UTF8Encoding.UTF8.GetBytes(AESKEY);   
                aes.IV = UTF8Encoding.UTF8.GetBytes(AESKEY);   
                aes.Mode = CipherMode.CBC;   
                aes.Padding = PaddingMode.PKCS7;   
  
                ICryptoTransform iCryptoTransform = aes.CreateEncryptor();   
                byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);   
  
                // return Convert.ToBase64String(bResult); //返回base64加密;   
                return ByteToHex(bResult);                //返回十六进制数据;   
            }   
            catch  
            {   
                throw;   
            }   
        }   
  
        /// <summary>   
        /// AES加密   
        /// </summary>   
        /// <param name="data">要加密的字符串</param>   
        /// <param name="sKey">密钥串(16位或32位)</param>   
        /// <returns>加密后的字符串</returns>   
        public static string EncryptAES(string data, string sKey)   
        {   
            try  
            {   
                RijndaelManaged aes = new RijndaelManaged();   
                byte[] bData = UTF8Encoding.UTF8.GetBytes(data);   
                aes.Key = UTF8Encoding.UTF8.GetBytes(sKey);   
                aes.IV = UTF8Encoding.UTF8.GetBytes(sKey);   
                aes.Mode = CipherMode.CBC;   
                aes.Padding = PaddingMode.PKCS7;   
  
                ICryptoTransform iCryptoTransform = aes.CreateEncryptor();   
                byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);   
  
                // return Convert.ToBase64String(bResult); //返回base64加密;   
                return ByteToHex(bResult);                //返回十六进制数据;   
            }   
            catch  
            {   
                throw;   
            }   
        }   
  
        /// <summary>   
        /// AES解密   
        /// </summary>   
        /// <param name="data">要解密的字符串</param>   
        /// <returns>解密后的字符串</returns>   
        public static string DecryptAES(string data)   
        {   
            try  
            {   
                RijndaelManaged aes = new RijndaelManaged();   
                //byte[] bData = Convert.FromBase64String(data); //解密base64;   
                byte[] bData = HexToByte(data);                  //16进制to byte[];   
                aes.Key = UTF8Encoding.UTF8.GetBytes(AESKEY);   
                aes.IV = UTF8Encoding.UTF8.GetBytes(AESKEY);   
                aes.Mode = CipherMode.CBC;   
                aes.Padding = PaddingMode.PKCS7;   
  
                ICryptoTransform iCryptoTransform = aes.CreateDecryptor();   
                byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);   
                return Encoding.UTF8.GetString(bResult);   
            }   
            catch  
            {   
                throw;   
            }   
        }   
  
        /// <summary>   
        /// AES解密   
        /// </summary>   
        /// <param name="data">要解密的字符串</param>   
        /// <param name="sKey">密钥串(16位或32位字符串)</param>   
        /// <returns>解密后的字符串</returns>   
        public static string DecryptAES(string data, string sKey)   
        {   
            try  
            {   
                RijndaelManaged aes = new RijndaelManaged();   
                //byte[] bData = Convert.FromBase64String(data); //解密base64;   
                byte[] bData = HexToByte(data);                  //16进制to byte[];   
                aes.Key = UTF8Encoding.UTF8.GetBytes(sKey);   
                aes.IV = UTF8Encoding.UTF8.GetBytes(sKey);   
                aes.Mode = CipherMode.CBC;   
                aes.Padding = PaddingMode.PKCS7;   
  
                ICryptoTransform iCryptoTransform = aes.CreateDecryptor();   
                byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);   
                return Encoding.UTF8.GetString(bResult);   
            }   
            catch  
            {   
                throw;   
            }   
        }   
  
        /// <summary>   
        /// DES加密   
        /// </summary>   
        /// <param name="data">要加密的字符串</param>   
        /// <returns>加密后的字符串</returns>   
        public static string EncryptDES(string data)   
        {   
            DES des = new DESCryptoServiceProvider();   
            des.Mode = CipherMode.ECB;   
            des.Key = Encoding.UTF8.GetBytes(DESKEY);   
            des.IV = Encoding.UTF8.GetBytes(DESKEY);   
  
            byte[] bytes = Encoding.UTF8.GetBytes(data);   
            byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);   
  
            //return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)   
            return ByteToHex(resultBytes);//十六位   
        }   
  
        /// <summary>   
        /// DES加密   
        /// </summary>   
        /// <param name="data">要加密的字符串</param>   
        /// <param name="key">密钥串(8位字符串)</param>   
        /// <returns>加密后的字符串</returns>   
        public static string EncryptDES(string data, string key)   
        {   
            DES des = new DESCryptoServiceProvider();   
            des.Mode = CipherMode.ECB;   
            des.Key = Encoding.UTF8.GetBytes(key);   
            des.IV = Encoding.UTF8.GetBytes(key);   
  
            byte[] bytes = Encoding.UTF8.GetBytes(data);   
            byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);   
  
            //return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)   
            return ByteToHex(resultBytes);//十六位   
        }   
  
        /// <summary>   
        /// DES解密   
        /// </summary>   
        /// <param name="data">要解密的字符串</param>   
        /// <param name="key">密钥串(8位字符串)</param>   
        /// <returns>解密后的字符串</returns>   
        public static string DecryptDES(string data)   
        {   
            DES des = new DESCryptoServiceProvider();   
            des.Mode = CipherMode.ECB;   
            des.Key = Encoding.UTF8.GetBytes(DESKEY);   
            des.IV = Encoding.UTF8.GetBytes(DESKEY);   
  
            //byte[] bytes = Convert.FromBase64String(data);   
            byte[] bytes = HexToByte(data);   
            byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);   
  
            return Encoding.UTF8.GetString(resultBytes);   
        }   
  
        /// <summary>   
        /// DES解密   
        /// </summary>   
        /// <param name="data">要解密的字符串</param>   
        /// <param name="key">密钥串(8位字符串)</param>   
        /// <returns>解密后的字符串</returns>   
        public static string DecryptDES(string data, string key)   
        {   
            DES des = new DESCryptoServiceProvider();   
            des.Mode = CipherMode.ECB;   
            des.Key = Encoding.UTF8.GetBytes(key);   
            des.IV = Encoding.UTF8.GetBytes(key);   
  
            //byte[] bytes = Convert.FromBase64String(data);   
            byte[] bytes = HexToByte(data);   
            byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);   
  
            return Encoding.UTF8.GetString(resultBytes);   
        }   
  
        // method to convert hex string into a byte array     
        private static byte[] HexToByte(string data)   
        {   
            data = data.Replace(" ", "");   
  
            byte[] comBuffer = new byte[data.Length / 2];   
  
            for (int i = 0; i < data.Length; i += 2)   
                comBuffer[i / 2] = (byte)Convert.ToByte(data.Substring(i, 2), 16);   
  
            return comBuffer;   
        }   
  
        // method to convert a byte array into a hex string     
        private static string ByteToHex(byte[] comByte)   
        {   
            StringBuilder builder = new StringBuilder(comByte.Length * 3);   
  
            foreach (byte data in comByte)   
                builder.Append(Convert.ToString(data, 16).PadLeft(2, '0').PadRight(3, ' '));   
  
            return builder.ToString().ToUpper().Replace(" ", "");   
        }   
    }  
分享到:
评论

相关推荐

    AES+DES 加密 For ASP.NET(C#)

    虽然大多数项目开发很少用到,但真到想用的时候,却发现网上真正可用的资源很少;所以整理了一下,发上来,仅供参考;(DES和天津联通短信网关测试通过;AES和杭州小灵通测试通过;)

    DES + AES 标准加解密算法For ASP(VBScript)

    后来不得不妥协采用一个变通的方法,就是DES和AES部分用.net来做,再用xmlhttp去取结果。 这样做的结果以后会带来很多麻烦,比如曾多次遇到,客户一在新机器上部署,但忘了安装.net framework,导致接口出错。 后来...

    NET加密算法

    存在一些问题,很多人喜欢罗列每种加密算法的具体实现,假设我们要求实现AES 和Triple DES 加密算 法,的确可以很多地分别给出它们的具体实现。 那我们真的有必要给出每个加密算法的具体实现吗?而且这样的设计不...

    DES_AES_For_ASP_sha56_class.rar

    ASP_DES_AES_sha256加密解密,对文本信息aes des sha256 加解密方法类

    WEB 加密解密小系统

    系统对每一个文件都录入独立的密码,在查看详细时会要求输入! 系统可以选择AES或DES进行加密,独立密码使用MD5加密后截取作为密钥! 虽然是以前写的,但是多少有一些参考价值!

    asp.net 通用包

    /// DES加密字符串 /// /// 待加密的字符串 /// 加密密钥,要求为8位 /// 加密成功返回加密后的字符串,失败返回源串 public static string Encode(string encryptString, string encryptKey) { encryptKey =...

    加密算法Demo 数据加密标准(DES)的C#实现

    * 关于DES加密中的初始化向量IV: * 对于给定的密钥 k,不使用初始化向量的简单块密码将同一个纯文本输入块加密为 * 同一个密码文本输出块。如果您的纯文本流中有重复块,则您的密码文本流中也会 * 有重复块。...

    asp常用的加密函数

    asp常用的加密函数

    sql数据库相关加密知识

    AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用,尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。...

    共享软件加密算法库 企业版2.51

    算法库集成的算法有:BlowFish,MD5,Secret16,AES、SHA、CRC32、RSA、DES、字符串加/解密、文件加/解密等多种功能强大的算法,可以满足软件开发的各类需求,加密算法库附有详细的函数说明及各类软件调用示例。

    加解密程序源码

    Asp与Delphi互通的AES加解密程序源码,AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经...

    Ourmsg2016

    Ourmsg的数据传输采用了GZIP流压缩和AES 256/192、3DES 192/128位加密算法,使数据传输安全可靠。因此,Ourmsg也适合安全性要求较高的私有网络内安装部署使用。同时,Ourmsg也可部署在互联网上,提供给互联网公众...

    encryptdll3.8

    算法库集成的算法有:BlowFish,MD5,Secret16,AES、SHA、CRC32、RSA、DES、字符串加/解密、文件加/解密等多种功能强大的算法,可以满足软件开发的各类需求,加密算法库附有详细的函数说明及各类软件调用示例。

    微型网站服务器WWS1.0(代替IIS)

    对于ASP程序,系统提供MD2,MD4,MD5,MDC2,RipeMD160,SHA,SHA-1,SHA-2 ,base32,base64,AES,BLOWFISH,CAST5,DES,IDEA,RC2,RC4等很多加密算法,提供http、TCP、socket及聊天室等组件

Global site tag (gtag.js) - Google Analytics