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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DES加密解密与AES加密解密

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

目錄

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

? ? ? 隨著開發(fā)時(shí)間的變長,當(dāng)初認(rèn)為比較難的東西,現(xiàn)在漸漸也就變的不那么難了!特別對(duì)于一些經(jīng)常很少使用的類,時(shí)間長了之后漸漸就陌生了。所以在這里寫一些日后可能會(huì)用到的加密與解密。

?

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

?下面是在網(wǎng)上看到的一段關(guān)于“ES加密程序和一個(gè)AES加密程序,比較兩個(gè)程序進(jìn)行大文件加密的效率”:

  • 實(shí)驗(yàn)步驟:

  • 實(shí)驗(yàn)結(jié)果:

  • 結(jié)果分析:

當(dāng)文件很小時(shí),兩個(gè)程序加密的時(shí)間差不多。但是當(dāng)文件變大時(shí),DES對(duì)文件的加密效率低于AES對(duì)文件的加密效率。可見AES具有比DES更好的安全性,效率!

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

?

========DES加密======== /// <summary>/// DES加密/// </summary>/// <param name="pToEncrypt">要加密的內(nèi)容</param>/// <param name="sKey">密鑰</param>/// <param name="StrMs">輸出加密后的字符串</param>/// <returns>加密后的byte數(shù)組</returns>public static byte[] Encrypt(string pToEncrypt, string sKey, out string StrMs){//訪問數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)算法的加密服務(wù)提供程序 (CSP) 版本的包裝對(duì)象DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;des.Padding = PaddingMode.PKCS7;des.Key = Encoding.UTF8.GetBytes(sKey); //建立加密對(duì)象的密鑰和偏移量//des.IV = Encoding.UTF8.GetBytes(sKey);  // 如果是用ECB模式,則IV不管是什么都不會(huì)影響加密/解密的結(jié)果byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);//把字符串放到byte數(shù)組中 MemoryStream ms = new MemoryStream();//創(chuàng)建其支持存儲(chǔ)區(qū)為內(nèi)存的流 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定義將數(shù)據(jù)流鏈接到加密轉(zhuǎn)換的流cs.Write(inputByteArray, 0, inputByteArray.Length);//上面已經(jīng)完成了把加密后的結(jié)果放到內(nèi)存中去 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個(gè)字節(jié)的密鑰,同前面的加密密鑰相同)</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); //建立加密對(duì)象的密鑰和偏移量,此值重要,不能修改//des.IV = Encoding.UTF8.GetBytes(sKey);// 如果是用ECB模式,則IV不管是什么都不會(huì)影響加密/解密的結(jié)果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">要加密的內(nèi)容</param>/// <param name="strKey">密鑰(16或者32位)</param>/// <returns>Base64轉(zhuǎn)碼后的密文</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">要解密的內(nèi)容</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解密 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/fengxuehuanlin/p/5266362.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。