Net Core使用3DES算法加解密
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; } } } } } }
下一篇:
基于单链表的直接插入排序