一個對稱加密、解密的方法C#工具類
封裝了一個對稱加解密的類,用私鑰和密鑰加解密
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Cryptography;namespace CMD.EDI { public class EncryptHandler { /// <summary> /// 加密字符串 /// </summary> public static string Encrypt(string password, string cleartext) { string password2 = "Ahbool";
string cipher; char[] key = new char[8]; if (password.Length > 8) { password = password.Remove(8); } password.CopyTo(0, key, 0, password.Length); char[] iv = new char[8]; if (password2.Length > 8) { password2 = password2.Remove(8); } password2.CopyTo(0, iv, 0, password2.Length); if (cleartext == null) { return string.Empty; } SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider(); serviceProvider.Key = Encoding.ASCII.GetBytes(key); serviceProvider.IV = Encoding.ASCII.GetBytes(iv); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateEncryptor(), CryptoStreamMode.Write); StreamWriter streamWriter = new StreamWriter(cryptoStream); streamWriter.Write(cleartext); streamWriter.Dispose(); cryptoStream.Dispose(); byte[] signData = memoryStream.ToArray(); memoryStream.Dispose(); serviceProvider.Clear(); cipher = Convert.ToBase64String(signData); return cipher; } /// <summary> /// 解密字符串 /// </summary> public static string Decrypt(string password, string ciphertext) { string password2 = "Ahbool"; string cipher = string.Empty; try { char[] key = new char[8]; if (password.Length > 8) { password = password.Remove(8); } password.CopyTo(0, key, 0, password.Length); char[] iv = new char[8]; if (password2.Length > 8) { password2 = password2.Remove(8); } password2.CopyTo(0, iv, 0, password2.Length); if (ciphertext == null) { return cipher; } SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider(); serviceProvider.Key = Encoding.ASCII.GetBytes(key); serviceProvider.IV = Encoding.ASCII.GetBytes(iv); byte[] contentArray = Convert.FromBase64String(ciphertext); MemoryStream memoryStream = new MemoryStream(contentArray); CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateDecryptor(), CryptoStreamMode.Read); StreamReader streamReader = new StreamReader(cryptoStream); cipher = streamReader.ReadToEnd(); streamReader.Dispose(); cryptoStream.Dispose(); memoryStream.Dispose(); serviceProvider.Clear(); } catch (Exception ex) { throw new SystemException("密鑰錯誤,數據包解密失敗."); } return cipher; } }
}</pre>
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!