狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#對稱加密(AES加密)每次生成的結果都不同的實現思路和代碼實例

admin
2023年3月22日 18:28 本文熱度 740

這篇文章主要介紹了C#對稱加密(AES加密)每次生成的結果都不同的實現思路和代碼實例,每次解密時從密文中截取前16位,這就是實現隨機的奧秘,本文同時給出了實現代碼,需要的朋友可以參考下。

思路:使用隨機向量,把隨機向量放入密文中,每次解密時從密文中截取前16位,其實就是我們之前加密的隨機向量。

代碼:

  1. public static string Encrypt(string plainText, string AESKey) 

  2. RijndaelManaged rijndaelCipher = new RijndaelManaged(); 

  3. byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字節數組 

  4. rijndaelCipher.Key = Convert.fromBase64String(AESKey);//加解密雙方約定好密鑰:AESKey 

  5. rijndaelCipher.GenerateIV(); 

  6. byte[] keyIv = rijndaelCipher.IV; 

  7. byte[] cipherBytes = null

  8. using (MemoryStream ms = new MemoryStream()) 

  9. using (CryptoStream cs = new CryptoStream(ms, rijndaelCipher.createEncryptor(), CryptoStreamMode.Write)) 

  10. cs.Write(inputByteArray, 0, inputByteArray.Length); 

  11. cs.FlushFinalBlock(); 

  12. cipherBytes = ms.ToArray();//得到加密后的字節數組 

  13. cs.Close(); 

  14. ms.Close(); 

  15. var allEncrypt = new byte[keyIv.Length + cipherBytes.Length]; 

  16. Buffer.BlockCopy(keyIv, 0, allEncrypt, 0, keyIv.Length); 

  17. Buffer.BlockCopy(cipherBytes, 0, allEncrypt, keyIv.Length * sizeof(byte), cipherBytes.Length); 

  18. return Convert.ToBase64String(allEncrypt); 

  19.  

  20. public static string Decrypt(string showText, string AESKey) 

  21. string result = string.Empty; 

  22. try 

  23. byte[] cipherText = Convert.fromBase64String(showText); 

  24. int length = cipherText.Length; 

  25. SymmetricAlgorithm rijndaelCipher = Rijndael.create(); 

  26. rijndaelCipher.Key = Convert.fromBase64String(AESKey);//加解密雙方約定好的密鑰 

  27. byte[] iv = new byte[16]; 

  28. Buffer.BlockCopy(cipherText, 0, iv, 0, 16); 

  29. rijndaelCipher.IV = iv; 

  30. byte[] decryptBytes = new byte[length - 16]; 

  31. byte[] passwdText = new byte[length - 16]; 

  32. Buffer.BlockCopy(cipherText, 16, passwdText, 0, length - 16); 

  33. using (MemoryStream ms = new MemoryStream(passwdText)) 

  34. using (CryptoStream cs = new CryptoStream(ms, rijndaelCipher.createDecryptor(), CryptoStreamMode.Read)) 

  35. cs.Read(decryptBytes, 0, decryptBytes.Length); 

  36. cs.Close(); 

  37. ms.Close(); 

  38. result = Encoding.UTF8.GetString(decryptBytes).Replace("/0"""); ///將字符串后尾的'/0'去掉 

  39. catch { } 

  40. return result; 

調用: 

  1. string jiaMi = MyAESTools.Encrypt(textBox1.Text, "abcdefgh12345678abcdefgh12345678"); 

  2.  

  3. string jieMi = MyAESTools.Decrypt(textBox3.Text, "abcdefgh12345678abcdefgh12345678"); 


該文章在 2023/3/22 18:28:42 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved