阅读量:3
在ASP.NET中,使用AES加密时,可以选择不同的填充方式。常见的填充方式有PKCS7、ISO10126和NoPadding。下面是一个使用AES加密和解密的示例,展示了如何使用不同的填充方式。
首先,确保已经安装了System.Security.Cryptography命名空间。
using System;
using System.Text;
using System.Security.Cryptography;
接下来,我们创建一个加密和解密的方法,分别使用PKCS7、ISO10126和NoPadding填充方式。
public static string Encrypt(string plainText, string key, string iv, PaddingMode paddingMode)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = paddingMode;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);
return Convert.ToBase64String(encryptedBytes);
}
}
public static string Decrypt(string cipherText, string key, string iv, PaddingMode paddingMode)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = paddingMode;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
byte[] encryptedBytes = Convert.FromBase64String(cipherText);
byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
现在,我们可以使用这些方法来加密和解密字符串。
string plainText = "Hello, World!";
string key = "abcdefghijklmnop";
string iv = "1234567890abcdef";
// 使用PKCS7填充方式加密
string encryptedTextPkcs7 = Encrypt(plainText, key, iv, PaddingMode.PKCS7);
Console.WriteLine("Encrypted text (PKCS7): " + encryptedTextPkcs7);
// 使用ISO10126填充方式加密
string encryptedTextIso10126 = Encrypt(plainText, key, iv, PaddingMode.ISO10126);
Console.WriteLine("Encrypted text (ISO10126): " + encryptedTextIso10126);
// 使用NoPadding填充方式加密
string encryptedTextNoPadding = Encrypt(plainText, key, iv, PaddingMode.NoPadding);
Console.WriteLine("Encrypted text (NoPadding): " + encryptedTextNoPadding);
// 使用PKCS7填充方式解密
string decryptedTextPkcs7 = Decrypt(encryptedTextPkcs7, key, iv, PaddingMode.PKCS7);
Console.WriteLine("Decrypted text (PKCS7): " + decryptedTextPkcs7);
// 使用ISO10126填充方式解密
string decryptedTextIso10126 = Decrypt(encryptedTextIso10126, key, iv, PaddingMode.ISO10126);
Console.WriteLine("Decrypted text (ISO10126): " + decryptedTextIso10126);
// 使用NoPadding填充方式解密
string decryptedTextNoPadding = Decrypt(encryptedTextNoPadding, key, iv, PaddingMode.NoPadding);
Console.WriteLine("Decrypted text (NoPadding): " + decryptedTextNoPadding);
请注意,加密和解密时使用的密钥(key)和初始化向量(iv)应该是相同的。在实际应用中,请确保妥善保管这些密钥和向量。
以上就是关于“asp.net aes加密填充方式”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm