C#实现的AES加密解密,是一种常见的加密方式,下面我将详细讲解实现AES加密解密的完整攻略,包括示例说明。
什么是AES加密解密?
AES是一种对称加密算法,它能够通过一个密钥,对一段数据进行加密和解密。AES算法可以使用不同的密钥长度(128、192和256位),密钥越长,加密越强大,但是也越慢。
C#实现AES加密解密的基本步骤
- 引入命名空间:
using System.Security.Cryptography;
- 创建AES加密解密工具对象:
var aes = Aes.Create();
- 设置加密算法的密钥和初始化向量:
aes.Key = keyBytes; aes.IV = ivBytes;
- 创建加密对象:
var encryptor = aes.CreateEncryptor();
- 创建解密对象:
var decryptor = aes.CreateDecryptor();
- 加密:
var encryptedBytes = encryptor.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length);
- 解密:
var decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
- 将加密后的结果和解密后的结果转换成字符串类型:
var encryptedString = Convert.ToBase64String(encryptedBytes);var decryptedString = Encoding.UTF8.GetString(decryptedBytes);
示例一:加密字符串
下面演示一个C#实现AES加密字符串的示例。在这个示例中,我们将使用128位的密钥加密一个字符串。
using System;
using System.Security.Cryptography;
using System.Text;
namespace AESDemo
{
class Program
{
static void Main(string[] args)
{
//密钥和初始化向量
var keyBytes = Encoding.UTF8.GetBytes("1234567812345678");
var ivBytes = Encoding.UTF8.GetBytes("8765432187654321");
//待加密字符串
var plainText = "hello, world!";
//创建AES加密解密工具对象
var aes = Aes.Create();
//设置加密算法的密钥和初始化向量
aes.Key = keyBytes;
aes.IV = ivBytes;
//创建加密对象
var encryptor = aes.CreateEncryptor();
//将待加密字符串转换成字节数组
var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
//加密
var encryptedBytes = encryptor.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length);
//将加密后的结果转换成字符串类型
var encryptedString = Convert.ToBase64String(encryptedBytes);
Console.WriteLine(encryptedString);
}
}
}
示例二:解密字符串
下面演示一个C#实现AES解密字符串的示例。在这个示例中,我们将使用128位的密钥解密前一个示例中加密的字符串。
using System;
using System.Security.Cryptography;
using System.Text;
namespace AESDemo
{
class Program
{
static void Main(string[] args)
{
//密钥和初始化向量
var keyBytes = Encoding.UTF8.GetBytes("1234567812345678");
var ivBytes = Encoding.UTF8.GetBytes("8765432187654321");
//待解密字符串
var encryptedString = "p5toVpBV5yFJv1ZODMmDKQ==";
//创建AES加密解密工具对象
var aes = Aes.Create();
//设置加密算法的密钥和初始化向量
aes.Key = keyBytes;
aes.IV = ivBytes;
//创建解密对象
var decryptor = aes.CreateDecryptor();
//将待解密字符串转换成字节数组
var encryptedBytes = Convert.FromBase64String(encryptedString);
//解密
var decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
//将解密后的结果转换成字符串类型
var decryptedString = Encoding.UTF8.GetString(decryptedBytes);
Console.WriteLine(decryptedString);
}
}
}
以上两个示例修改密钥和待加解密的字符串即可使用不同的密钥和不同的数据进行加密解密。使用AES加密解密时,千万不要把密钥泄露出去,否则密钥泄露后,所有被加密的数据就会暴露。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现的AES加密解密完整实例 - Python技术站