使用DESCryptoServiceProvider进行文件的加密和解密,升级到.NET6之后,Visual Studio 2022警告已过时,百度之后也没有很好的方法。如下图:
自己看了微软的文档之后琢磨了一下才解决,已验证OK.
只需将:
var des = new DESCryptoServiceProvider();
改为:
var des = DES.Create();
附上完整的文件加/解密,基本可以满足简单的日常使用(仅供参考):
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DESHelper;
public static class DESHelper
{
private static readonly byte[] Key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
private static readonly byte[] IV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
/// <summary>
/// 加密
/// </summary>
/// <param name="plainText">加密的文本</param>
/// <returns></returns>
public static string Encrypt(string plainText)
{
byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
using (var des = DES.Create())
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write))
{
cs.Write(inputBytes, 0, inputBytes.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
}
}
}
/// <summary>
/// 解密
/// </summary>
/// <param name="cipherText">解密的文本</param>
/// <returns></returns>
public static string Decrypt(string cipherText)
{
byte[] inputBytes = Convert.FromBase64String(cipherText);
using (var des = DES.Create())
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write))
{
cs.Write(inputBytes, 0, inputBytes.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
}
}