日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DES加密解密与AES加密解密

發布時間:2024/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DES加密解密与AES加密解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
×

目錄

[1]AES加密算法和DES加密算法的效率比較 [2]AES和DES加密解密代碼

? ? ? 隨著開發時間的變長,當初認為比較難的東西,現在漸漸也就變的不那么難了!特別對于一些經常很少使用的類,時間長了之后漸漸就陌生了。所以在這里寫一些日后可能會用到的加密與解密。

?

一.AES加密算法和DES加密算法的效率比較:

?下面是在網上看到的一段關于“ES加密程序和一個AES加密程序,比較兩個程序進行大文件加密的效率”:

  • 實驗步驟:

  • 實驗結果:

  • 結果分析:

文件很小時,兩個程序加密的時間差不多。但是當文件變大時,DES對文件的加密效率低于AES對文件的加密效率。可見AES具有比DES更好的安全性,效率!

二.AES和DES加密解密代碼:

?

========DES加密======== /// <summary>/// DES加密/// </summary>/// <param name="pToEncrypt">要加密的內容</param>/// <param name="sKey">密鑰</param>/// <param name="StrMs">輸出加密后的字符串</param>/// <returns>加密后的byte數組</returns>public static byte[] Encrypt(string pToEncrypt, string sKey, out string StrMs){//訪問數據加密標準(DES)算法的加密服務提供程序 (CSP) 版本的包裝對象DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;des.Padding = PaddingMode.PKCS7;des.Key = Encoding.UTF8.GetBytes(sKey); //建立加密對象的密鑰和偏移量//des.IV = Encoding.UTF8.GetBytes(sKey);  // 如果是用ECB模式,則IV不管是什么都不會影響加密/解密的結果byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);//把字符串放到byte數組中 MemoryStream ms = new MemoryStream();//創建其支持存儲區為內存的流 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定義將數據流鏈接到加密轉換的流cs.Write(inputByteArray, 0, inputByteArray.Length);//上面已經完成了把加密后的結果放到內存中去 cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder();foreach (byte b in ms.ToArray()){ret.AppendFormat("{0:X2}", b);}StrMs = ret.ToString();return ms.ToArray();}/// <summary>/// DEs 解密過程/// </summary>/// <param name="pToDecrypt">被解密的字符串</param>/// <param name="sKey">密鑰(只支持8個字節的密鑰,同前面的加密密鑰相同)</param>/// <returns>返回被解密的字符串</returns>public static string Decrypt(string pToDecrypt, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;des.Padding = PaddingMode.PKCS7;byte[] inputByteArray = new byte[pToDecrypt.Length / 2];for (int x = 0; x < pToDecrypt.Length / 2; x++){int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));inputByteArray[x] = (byte)i;}des.Key = Encoding.UTF8.GetBytes(sKey); //建立加密對象的密鑰和偏移量,此值重要,不能修改//des.IV = Encoding.UTF8.GetBytes(sKey);// 如果是用ECB模式,則IV不管是什么都不會影響加密/解密的結果MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();return System.Text.Encoding.UTF8.GetString(ms.ToArray());}

?

/// <summary>/// AES加密/// </summary>/// <param name="toEncrypt">要加密的內容</param>/// <param name="strKey">密鑰(16或者32位)</param>/// <returns>Base64轉碼后的密文</returns>public static string Encrypt(string toEncrypt, string strKey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strKey);byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);RijndaelManaged rDel = new RijndaelManaged();//using System.Security.Cryptography; rDel.Key = keyArray;rDel.Mode = CipherMode.ECB;//using System.Security.Cryptography; rDel.Padding = PaddingMode.PKCS7;//using System.Security.Cryptography; ICryptoTransform cTransform = rDel.CreateEncryptor();//using System.Security.Cryptography; byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);}/// <summary>/// AES解密/// </summary>/// <param name="toDecrypt">要解密的內容</param>/// <param name="strKey">密鑰(16或者32位)</param>/// <returns>解密后的明文</returns>public static string Decrypt(string toDecrypt, string strKey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strKey);byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);RijndaelManaged rDel = new RijndaelManaged();rDel.Key = keyArray;rDel.Mode = CipherMode.ECB;rDel.Padding = PaddingMode.PKCS7;ICryptoTransform cTransform = rDel.CreateDecryptor();byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return UTF8Encoding.UTF8.GetString(resultArray);}#endregion AES解密 }

?

轉載于:https://www.cnblogs.com/fengxuehuanlin/p/5266362.html

總結

以上是生活随笔為你收集整理的DES加密解密与AES加密解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。