首先,引入
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(Data Encryption Standard)是一种常用的对称加密算法,适合对小量数据进行...
ASP.NET URL参数传递加密及解密是Web应用程序中常见的安全措施,主要目的是保护用户数据的隐私,防止中间人攻击和数据篡改。在ASP.NET框架中,我们可以利用内置的加密解密工具来实现这一功能。以下是一些关于如何在...
除了基本的MD5加密,ASP.NET还提供了多种加密和解密方式,例如SHA系列、AES、DES等。这些算法各有特点,适用于不同的安全需求。例如,如果需要更高级的安全性,可以考虑使用RSA或AES等对称/非对称加密算法。 在实际...
在ASP.NET中,我们可以使用`System.Security.Cryptography`命名空间中的`DESCryptoServiceProvider`类来实现DES加密和解密。 #### 加密过程: 1. 创建`DESCryptoServiceProvider`实例。 2. 使用`CreateEncryptor`...
C#中常用的对称加密算法有AES(高级加密标准)、DES(数据加密标准)和TripleDES。例如,可以使用Aes类进行加密: ```csharp using System.Security.Cryptography; using System.Text; public static string ...
常见的对称加密算法有DES、3DES、AES等。例如,使用AES(高级加密标准)时,可以使用`System.Security.Cryptography.Aes`类。以下是一个简单的AES加密解密示例: ```csharp using System; using System.IO; using ...
虽然大多数项目开发很少用到,但真到想用的时候,却发现网上真正可用的资源很少;所以整理了一下,发上来,仅供参考;(DES和天津联通短信网关测试通过;AES和杭州小灵通测试通过;)
6. DESCryptoServiceProvider:是.NET Framework中对DES加密算法的实现。 在ASP.NET中,`System.Security.Cryptography`命名空间是处理所有加密操作的核心,提供了丰富的类库和方法。此外,`System.Web.Security`...
1. **System.Security.Cryptography** 命名空间:ASP.NET提供了丰富的加密类库,如AES(高级加密标准)、DES(数据加密标准)、RSA(公钥加密算法)等。其中,AES是最常用的对称加密算法,适用于字符串加密。 2. **...
例如,Aes类用于AES加密,Rsa类用于RSA加密,TripleDESCryptoServiceProvider类用于3DES加密。开发者可能使用这些类来实现加密和解密功能。 3. **三层架构的实现**: - **表示层**:这是用户与应用交互的部分,...
1. Symmetric Encryption(对称加密):对称加密使用相同的密钥进行加密和解密,如AES(高级加密标准)、DES(数据加密标准)和Triple DES。对称加密速度快,适用于大量数据的加密,但密钥管理和分发较复杂。 2. ...
而System.Security.Cryptography命名空间则提供了大量的加密算法,如AES、DES、RSA等。 3. **安全配置**:在Web.config文件中,可以配置安全相关的设置,比如设置身份验证模式、授权规则、机器密钥、SSL要求等。...
一、DES加密算法基础 DES是一种古老的加密算法,它使用64位的密钥对数据进行加密,但实际上只有56位是真正参与加密过程的。DES分为两个阶段:加密和解密。加密过程将明文转换为密文,而解密过程则将密文还原为明文。...
总结来说,ASP.NET Core提供了丰富的加密和解密工具,包括对称加密(如DES、3DES和AES)、非对称加密(如RSA和ECC)、哈希函数(如MD5)以及认证码(如HMAC)。选择哪种加密算法取决于应用场景、安全需求和性能考虑...
ASP.NET中常用的对称加密算法有AES(高级加密标准)和DES(数据加密标准)。使用`System.Security.Cryptography`命名空间中的类,如`Aes`或` DESCryptoServiceProvider`,可以轻松实现对称加密。 2. 非对称加密:非...
在.NET中,常用的加密算法包括对称加密(如:AES、DES、3DES)和非对称加密(如:RSA、DSA)。对称加密使用相同的密钥进行加密和解密,速度快,适合大量数据的加密;非对称加密则使用一对公钥和私钥,安全性更高,但...
- **对称加密**:如DES、3DES、AES等,使用相同的密钥进行加密和解密,效率高但密钥分发困难。 - **非对称加密**:如RSA、DSA,使用一对公钥和私钥,公钥可公开,私钥需保密,适用于安全通信。 3. **ASP.NET中的...
在***中,可以使用.NET Framework提供的加密类库来实现DES加密和解密操作。示例中使用了DESCryptoServiceProvider类,该类是DES算法在.NET中的一种实现。 3. 编码方式: 在进行加密前,需要将字符串转换为字节...
.NET加密技术是软件开发中确保数据安全的重要环节,它涵盖了多种加密算法和方法,用于保护敏感信息不被未经授权的人员访问。对称加密技术是一种常见的加密手段,它以其高效和简单的特点,在.NET框架中得到了广泛应用...
.NET框架提供了多种加密算法,如:DES、AES、RSA等。在这个例子中,我们将重点讨论使用AES(高级加密标准)进行加密,因为AES具有较高的安全性,并且在.NET中支持良好。 二、AES加密原理 AES是一种块密码,它将...