用C#窗体实现AES加密和解密程序
时间: 2023-07-12 16:17:20 浏览: 177
C#实现 AES加密与解密
好的,我可以为您提供一个简单的示例代码来实现AES加密和解密程序。
首先,您需要在您的项目中添加System.Security.Cryptography命名空间,然后可以使用Aes类来执行加密和解密操作。
以下是一个简单的代码示例,它使用AES加密算法来加密和解密字符串:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
namespace AesEncryptionDemo
{
public class AesEncryption
{
private static readonly byte[] Salt = Encoding.ASCII.GetBytes("This is my salt value");
public static string Encrypt(string plainText, string password)
{
byte[] encryptedBytes;
using (Aes aes = Aes.Create())
{
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, Salt);
aes.Key = key.GetBytes(aes.KeySize / 8);
aes.IV = key.GetBytes(aes.BlockSize / 8);
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);
encryptor.Dispose();
}
return Convert.ToBase64String(encryptedBytes);
}
public static string Decrypt(string encryptedText, string password)
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
string plainText;
using (Aes aes = Aes.Create())
{
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, Salt);
aes.Key = key.GetBytes(aes.KeySize / 8);
aes.IV = key.GetBytes(aes.BlockSize / 8);
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
plainText = Encoding.UTF8.GetString(decryptedBytes);
decryptor.Dispose();
}
return plainText;
}
}
}
```
在上面的示例中,我们使用了Rfc2898DeriveBytes类来生成密钥和IV向量。这个类使用密码和盐值作为输入,并生成一个密钥和一个IV向量。在加密和解密过程中,我们使用这个密钥和IV向量来执行加密和解密操作。
您可以在您的窗体应用程序中使用这个示例代码来加密和解密用户输入的数据。例如,您可以在一个文本框中接收用户输入的数据,然后使用Encrypt方法加密它,并将结果显示在另一个文本框中。同样地,您可以使用Decrypt方法将用户输入的密文解密,并显示结果在一个文本框中。
阅读全文