欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C# 加解密之DES

    說(shuō)完了對稱(chēng)加密中的AES,這一篇再來(lái)介紹下DES。

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

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

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

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

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

實(shí)現功能:

    • 使用DES加密方式加解密文本數據

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

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

.NET Framework版本:4.5

實(shí)現代碼:

 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為,則自動(dòng)補全到8位            byte[] byteKey = Encoding.UTF8.GetBytes(desModel.Key.PadRight(key8.Length));            //復制密鑰            Array.Copy(byteKey, key8, key8.Length);
//使用8位向量 byte[] iv8 = new byte[8]; //如果我們的向量不是8為,則自動(dòng)補全到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為,則自動(dòng)補全到8位 byte[] byteKey = Encoding.UTF8.GetBytes(desModel.Key.PadRight(key8.Length)); //復制密鑰 Array.Copy(byteKey, key8, key8.Length);
//使用8位向量 byte[] iv8 = new byte[8]; //如果我們的向量不是8為,則自動(dòng)補全到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> /// 需要加密/解密的數據 /// </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;
}

實(shí)現效果:

由簡(jiǎn)入繁,拿來(lái)即用

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用X.509數字證書(shū)加密解密實(shí)務(wù)(三)-- 使用RSA證書(shū)結合對稱(chēng)加密技術(shù)加密長(cháng)數據
.NET中的加密算法總結
3DES加密算法 - 5、算法--Algorithm - 大頭
Python AES256加密
RSA加密解密及數字簽名Java實(shí)現
主題:java 加密解密簡(jiǎn)單實(shí)現
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久