using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Test.Practice
{
public class EncrypteHelper
{
public string key = "99BA5433DF5FA898C8E078B8BA55F251";
public byte[] iv = {1,2,3,4,5,6,7,8};
SymmetricAlgorithm symmetricAlgorithm = new TripleDESCryptoServiceProvider();
/// <summary>
/// 3Des加密
/// </summary>
/// <param name="encrypteStr">需要加密的字符串</param>
/// <returns></returns>
public string EncryptedString(string encrypteStr)
{
if (string.IsNullOrWhiteSpace(encrypteStr))
{
return string.Empty;
}
byte[] bytes;
symmetricAlgorithm.Key=Convert.FromBase64String(key);
symmetricAlgorithm.IV = iv;
symmetricAlgorithm.Mode= CipherMode.ECB;//指定加密运算模式
symmetricAlgorithm.Padding= PaddingMode.ANSIX923;//设置加密算法的填充模式
using ICryptoTransform cryptoTransform = symmetricAlgorithm.CreateEncryptor(symmetricAlgorithm.Key, symmetricAlgorithm.IV);
using MemoryStream memoryStream = new();
using CryptoStream cryptoStream = new(memoryStream, cryptoTransform, CryptoStreamMode.Write);
bytes = Encoding.UTF8.GetBytes(encrypteStr);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
cryptoStream.Close();
symmetricAlgorithm.Clear();
string result = Convert.ToBase64String(memoryStream.ToArray());
return result;
}
/// <summary>
/// 3Des解密
/// </summary>
/// <param name="decryptStr">解密字符串</param>
/// <returns></returns>
public string DecryptString(string decryptStr)
{
if (string.IsNullOrWhiteSpace(decryptStr))
{
return string.Empty;
}
byte[] bytes;
symmetricAlgorithm.Key = Convert.FromBase64String(key);
symmetricAlgorithm.IV= iv;
symmetricAlgorithm.Mode= CipherMode.ECB;//与加密算法一致
symmetricAlgorithm.Padding=PaddingMode.ANSIX923;//与加密算法一致
using (ICryptoTransform cryptoTransform = symmetricAlgorithm.CreateEncryptor(symmetricAlgorithm.Key, symmetricAlgorithm.IV))
{
using (MemoryStream memoryStream = new())
{
using (CryptoStream cryptoStream = new(memoryStream, cryptoTransform, CryptoStreamMode.Write))
{
bytes = Encoding.UTF8.GetBytes(decryptStr);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
cryptoStream.Close();
symmetricAlgorithm.Clear();
string result = Convert.ToBase64String(memoryStream.ToArray());
return result;
}
}
}
}
}
}
Net Core使用3DES算法加解密
于 2022-03-01 16:29:23 首次发布