`
xylw
  • 浏览: 60275 次
  • 性别: 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(" ", "");   
        }   
    }  
分享到:
评论

相关推荐

    ASP.NET实现 DES加密解密类

    【ASP.NET实现DES加密解密类】的知识点详解 在ASP.NET中,有时我们需要对敏感数据进行加密处理,以确保其在传输或存储时的安全性。DES(Data Encryption Standard)是一种常用的对称加密算法,适合对小量数据进行...

    ASP.NET url参数传递加密及解密方法

    ASP.NET URL参数传递加密及解密是Web应用程序中常见的安全措施,主要目的是保护用户数据的隐私,防止中间人攻击和数据篡改。在ASP.NET框架中,我们可以利用内置的加密解密工具来实现这一功能。以下是一些关于如何在...

    asp.net MD5加密

    除了基本的MD5加密,ASP.NET还提供了多种加密和解密方式,例如SHA系列、AES、DES等。这些算法各有特点,适用于不同的安全需求。例如,如果需要更高级的安全性,可以考虑使用RSA或AES等对称/非对称加密算法。 在实际...

    .NET 2种加密算法,以及解密

    在ASP.NET中,我们可以使用`System.Security.Cryptography`命名空间中的`DESCryptoServiceProvider`类来实现DES加密和解密。 #### 加密过程: 1. 创建`DESCryptoServiceProvider`实例。 2. 使用`CreateEncryptor`...

    c# asp.net 字符串加密解密的类

    C#中常用的对称加密算法有AES(高级加密标准)、DES(数据加密标准)和TripleDES。例如,可以使用Aes类进行加密: ```csharp using System.Security.Cryptography; using System.Text; public static string ...

    asp.net加密解密示例

    常见的对称加密算法有DES、3DES、AES等。例如,使用AES(高级加密标准)时,可以使用`System.Security.Cryptography.Aes`类。以下是一个简单的AES加密解密示例: ```csharp using System; using System.IO; using ...

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

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

    ASP.NET各种加密方式DEMO

    6. DESCryptoServiceProvider:是.NET Framework中对DES加密算法的实现。 在ASP.NET中,`System.Security.Cryptography`命名空间是处理所有加密操作的核心,提供了丰富的类库和方法。此外,`System.Web.Security`...

    asp.net 字符串加密减密

    1. **System.Security.Cryptography** 命名空间:ASP.NET提供了丰富的加密类库,如AES(高级加密标准)、DES(数据加密标准)、RSA(公钥加密算法)等。其中,AES是最常用的对称加密算法,适用于字符串加密。 2. **...

    ASP.NET加密源代码 三层

    例如,Aes类用于AES加密,Rsa类用于RSA加密,TripleDESCryptoServiceProvider类用于3DES加密。开发者可能使用这些类来实现加密和解密功能。 3. **三层架构的实现**: - **表示层**:这是用户与应用交互的部分,...

    asp.net 加密解密工具!

    1. Symmetric Encryption(对称加密):对称加密使用相同的密钥进行加密和解密,如AES(高级加密标准)、DES(数据加密标准)和Triple DES。对称加密速度快,适用于大量数据的加密,但密钥管理和分发较复杂。 2. ...

    ASP.NET安全和加密

    而System.Security.Cryptography命名空间则提供了大量的加密算法,如AES、DES、RSA等。 3. **安全配置**:在Web.config文件中,可以配置安全相关的设置,比如设置身份验证模式、授权规则、机器密钥、SSL要求等。...

    C# ASP.NET - 加密与解密数据库中字段数据

    一、DES加密算法基础 DES是一种古老的加密算法,它使用64位的密钥对数据进行加密,但实际上只有56位是真正参与加密过程的。DES分为两个阶段:加密和解密。加密过程将明文转换为密文,而解密过程则将密文还原为明文。...

    asp.net core常见的4种数据加密算法

    总结来说,ASP.NET Core提供了丰富的加密和解密工具,包括对称加密(如DES、3DES和AES)、非对称加密(如RSA和ECC)、哈希函数(如MD5)以及认证码(如HMAC)。选择哪种加密算法取决于应用场景、安全需求和性能考虑...

    asp.net中加密数据库数据

    ASP.NET中常用的对称加密算法有AES(高级加密标准)和DES(数据加密标准)。使用`System.Security.Cryptography`命名空间中的类,如`Aes`或` DESCryptoServiceProvider`,可以轻松实现对称加密。 2. 非对称加密:非...

    .net加密解密算法demo

    在.NET中,常用的加密算法包括对称加密(如:AES、DES、3DES)和非对称加密(如:RSA、DSA)。对称加密使用相同的密钥进行加密和解密,速度快,适合大量数据的加密;非对称加密则使用一对公钥和私钥,安全性更高,但...

    asp.net加密解密实例

    - **对称加密**:如DES、3DES、AES等,使用相同的密钥进行加密和解密,效率高但密钥分发困难。 - **非对称加密**:如RSA、DSA,使用一对公钥和私钥,公钥可公开,私钥需保密,适用于安全通信。 3. **ASP.NET中的...

    asp.net实现的DES加密解密操作示例

    在***中,可以使用.NET Framework提供的加密类库来实现DES加密和解密操作。示例中使用了DESCryptoServiceProvider类,该类是DES算法在.NET中的一种实现。 3. 编码方式: 在进行加密前,需要将字符串转换为字节...

    .NET加密技术剖析对称加密技术

    .NET加密技术是软件开发中确保数据安全的重要环节,它涵盖了多种加密算法和方法,用于保护敏感信息不被未经授权的人员访问。对称加密技术是一种常见的加密手段,它以其高效和简单的特点,在.NET框架中得到了广泛应用...

    .net地址栏传值加密例子

    .NET框架提供了多种加密算法,如:DES、AES、RSA等。在这个例子中,我们将重点讨论使用AES(高级加密标准)进行加密,因为AES具有较高的安全性,并且在.NET中支持良好。 二、AES加密原理 AES是一种块密码,它将...

Global site tag (gtag.js) - Google Analytics