公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 加解密之DES

admin
2023年2月27日 10:24 本文熱度 1036

   說完了對稱加密中的AES,這一篇再來介紹下DES。

    加解密原理什么的就不介紹了,大家可以自行百度(主要我也不太明白,也不需要太明白),大致說一下兩者的區(qū)別吧!

  1. 首先肯定是加密算法的不同,嗯,這一句完全是廢話,不同的加密方式算法肯定不會一樣。

  2. AES比DES的運算速度更快。

  3. AES比DES破解難度高,相對比較安全。

代碼實現(xiàn)的話其實AES和DES的寫法是基本差不多的,但是這里有一個參數(shù)問題還是需要提一下。在上一篇AES中我們有介紹過密鑰長度只能是16、24、32;在DES中的話,密鑰(Key)的長度是8(由于密鑰的長度問題,所以這里如果使用暴力破解的話,還是有很高的概率可以還原數(shù)據(jù)),有向量(IV)的話,長度一般也是8;然后就是在AES中我們采用的是Rijndael,在這里我們換成DESCryptoServiceProvider;兩個加密的實現(xiàn)代碼主要就是這里的不同,其他基本一模一樣,所以稍微改一下即可。

實現(xiàn)功能:

    • 使用DES加密方式加解密文本數(shù)據(jù)

開發(fā)環(huán)境:

開發(fā)工具:Visual Studio 2013

.NET Framework版本:4.5

實現(xiàn)代碼:

 public class DesUtil    {        /// <summary>        /// DES加密        /// </summary>        /// <param name="desModel"></param>        /// <returns></returns>        public static byte[] Encrypt(DesModel desModel)        {            //使用8位密鑰            byte[] key8 = new byte[8];            //如果我們的密鑰不是8為,則自動補全到8位            byte[] byteKey = Encoding.UTF8.GetBytes(desModel.Key.PadRight(key8.Length));            //復制密鑰            Array.Copy(byteKey, key8, key8.Length);
//使用8位向量 byte[] iv8 = new byte[8]; //如果我們的向量不是8為,則自動補全到8位 byte[] byteIv = Encoding.UTF8.GetBytes(desModel.IV.PadRight(iv8.Length)); //復制向量 Array.Copy(byteIv, iv8, iv8.Length);
// 創(chuàng)建加密對象 DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider(); desProvider.Mode = desModel.Mode; desProvider.Padding = desModel.Padding; desProvider.Key = key8; desProvider.IV = iv8; byte[] result = null; try { using (MemoryStream ms = new MemoryStream()) { using (CryptoStream EncryptStream = new CryptoStream(ms, desProvider.createEncryptor(), CryptoStreamMode.Write)) { EncryptStream.Write(desModel.Data, 0, desModel.Data.Length); EncryptStream.FlushFinalBlock(); result = ms.ToArray(); } } } catch { } return result; }
/// <summary> /// DES解密 /// </summary> /// <param name="desModel"></param> /// <returns></returns> public static byte[] Decrypt(DesModel desModel) { //使用8位密鑰 byte[] key8 = new byte[8]; //如果我們的密鑰不是8為,則自動補全到8位 byte[] byteKey = Encoding.UTF8.GetBytes(desModel.Key.PadRight(key8.Length)); //復制密鑰 Array.Copy(byteKey, key8, key8.Length);
//使用8位向量 byte[] iv8 = new byte[8]; //如果我們的向量不是8為,則自動補全到8位 byte[] byteIv = Encoding.UTF8.GetBytes(desModel.IV.PadRight(iv8.Length)); //復制向量 Array.Copy(byteIv, iv8, iv8.Length);
// 創(chuàng)建解密對象 DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider(); desProvider.Mode = desModel.Mode; desProvider.Padding = desModel.Padding; desProvider.Key = key8; desProvider.IV = iv8; byte[] result = null; try { using (MemoryStream ms = new MemoryStream(desModel.Data)) { using (CryptoStream DecryptStream = new CryptoStream(ms, desProvider.createDecryptor(), CryptoStreamMode.Read)) { using (MemoryStream msResult = new MemoryStream()) { byte[] temp = new byte[1024 * 1024]; int len = 0; while ((len = DecryptStream.Read(temp, 0, temp.Length)) > 0) { msResult.Write(temp, 0, len); }
result = msResult.ToArray(); } } } } catch { } return result; }
/// <summary> /// DES加密字符串 /// </summary> /// <param name="data"></param> /// <param name="key"></param> /// <param name="iv"></param> /// <returns></returns> public static string Encrypt(string data, string key, string iv = "") { byte[] bytes = Encoding.UTF8.GetBytes(data); byte[] result = Encrypt(new DesModel { Data = bytes, Key = key, IV = iv, Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7 }); if (result == null) { return ""; } return Convert.ToBase64String(result); }
/// <summary> /// DES解密字符串 /// </summary> /// <param name="data"></param> /// <param name="key"></param> /// <param name="iv"></param> /// <returns></returns> public static string Decrypt(string data, string key, string iv = "") { byte[] bytes = Convert.fromBase64String(data); byte[] result = Decrypt(new DesModel { Data = bytes, Key = key, IV = iv, Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7 }); if (result == null) { return ""; } return Encoding.UTF8.GetString(result); }

public class DesModel { /// <summary> /// 需要加密/解密的數(shù)據(jù) /// </summary> public byte[] Data { get; set; }
/// <summary> /// 密鑰 /// </summary> public string Key { get; set; }
/// <summary> /// 向量 /// </summary> public string IV { get; set; }
/// <summary> /// 加密模式 /// </summary> public CipherMode Mode { get; set; }
/// <summary> /// 填充模式 /// </summary> public PaddingMode Padding { get; set; } } }
  private void btn_Des_Encrypt_Click(object sender, EventArgs e)        {            string result = DesUtil.Encrypt(textBox1.Text, "12345678900987654321");            textBox2.Text = result;        }
private void btn_Des_Decrypt_Click(object sender, EventArgs e) { string result = DesUtil.Decrypt(textBox2.Text, "12345678900987654321"); textBox1.Text = result;
}

實現(xiàn)效果:



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

主站蜘蛛池模板: 精品亚洲欧美中文字幕在 | 国产成人精品高清在线观看91 | 国产日韩欧美一区二区视频在线观看 | 精品无码中文视频在线观看 | 韩国美女爽快一级毛片免费观看 | 国产精品亚洲αv | 精品国产福利在线观看一区 | 国产极品美女到高潮无套久久 | 国产中文亚洲熟女日韩 | 国产成人精品免费视 | a级毛片在线免费 | 成人午夜精品网站在线观看 | 国产毛片黄色美女视频 | 国产毛毛浓密盛精品免费 | 激情婬乱a片无码一二三区下 | 高清无码免费中文字幕 | 国产a久久 | 国产一区在线观看视频 | 韩国软件视频gay | 国产精品麻豆v | 丰满白嫩尤物一区二区 | 成人无码h免费动漫在线观看 | 国产91高清免费 | 国产精品爆乳奶水无码视频免费 | 丰满的少妇愉情hd高清果冻传媒 | 国产精品一区二区三区在线 | 国产欧美日产高清欧美一区二区 | 国产在线视频玛雅视频 | 国产亚洲欧美另类一区二区 | 精品一区二区三区免费毛片爱 | 果冻传媒一区二区天美传媒 | 91麻豆极品在线观看 | 国精产品一区二区三区糖心 | 高清日韩国产无码一区二区 | 国产欧美精品在线一区二区三 | 国产高清视频在线观看播放 | 国产精品毛片高清在线完整版 | 国产精品日本欧美一区三 | 精品国产一区二区三区无码乌克兰 | 国产一区不卡在 | 国产成人综合亚洲精品 |