WPF串口通讯加密代码
时间: 2023-09-03 14:12:02 浏览: 142
对于WPF串口通讯加密,可以使用对称加密算法,如AES或DES,对要发送的数据进行加密,然后发送加密后的数据。接收方接收到数据后,再进行解密操作。
下面是一个使用AES算法进行加密和解密的示例代码:
```csharp
using System.Security.Cryptography;
using System.Text;
// 加密
public static string AESEncrypt(string plainText, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] encrypted;
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plainText);
}
encrypted = ms.ToArray();
}
}
return Convert.ToBase64String(encrypted);
}
}
// 解密
public static string AESDecrypt(string cipherText, byte[] key, byte[] iv)
{
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(cipherBytes))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
```
其中,`key`和`iv`分别是加密和解密时使用的密钥和初始化向量,可以根据需要生成。
在使用串口通讯时,可以将要发送的数据转换成字符串,然后使用`AESEncrypt`方法进行加密,得到加密后的字符串,再通过串口发送。接收方接收到数据后,先将接收到的数据转换成字符串,然后使用`AESDecrypt`方法进行解密,得到原始数据。
阅读全文