www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]DES加密應(yīng)該是最基礎(chǔ)的加密算法。DES一共就有4個(gè)參數(shù)參與運(yùn)作:明文、密文、密鑰、向量。為了初學(xué)者容易理解,可以把4個(gè)參數(shù)的關(guān)系寫成:密文=明文+密鑰+向量;明文=密文-密鑰-向量。為什么要向量這個(gè)

DES加密應(yīng)該是最基礎(chǔ)的加密算法。DES一共就有4個(gè)參數(shù)參與運(yùn)作:明文、密文、密鑰、向量。為了初學(xué)者容易理解,可以把4個(gè)參數(shù)的關(guān)系寫成:密文=明文+密鑰+向量;明文=密文-密鑰-向量。為什么要向量這個(gè)參數(shù)呢?因?yàn)槿绻幸黄恼?,有幾個(gè)詞重復(fù),那么這個(gè)詞加上密鑰形成的密文,仍然會(huì)重復(fù),這給破解者有機(jī)可乘,破解者可以根據(jù)重復(fù)的內(nèi)容,猜出是什么詞,然而一旦猜對(duì)這個(gè)詞,那么,他就能算出密鑰,整篇文章就被破解了!加上向量這個(gè)參數(shù)以后,每塊文字段都會(huì)依次加上一段值,這樣,即使相同的文字,加密出來(lái)的密文,也是不一樣的,算法的安全性大大提高!
下面我們做加密和解密方法:
using System;
//這個(gè)是使用DES的基礎(chǔ)
using System.Security.Cryptography;
//這個(gè)是處理文字編碼的前提
using System.Text;
//以“流”的形式處理文字,也是微軟DES算法要求的
using System.IO;
///
///明文
///密鑰
///向量
///
public string DESEncrypt(string strPlain,string strDESKey,string strDESIV)
{
?//把密鑰轉(zhuǎn)換成字節(jié)數(shù)組
?byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
?//把向量轉(zhuǎn)換成字節(jié)數(shù)組
?byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
?//聲明1個(gè)新的DES對(duì)象
?DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider();
?//開(kāi)辟一塊內(nèi)存流
?MemoryStream msEncrypt=new MemoryStream();
?//把內(nèi)存流對(duì)象包裝成加密流對(duì)象
?CryptoStream csEncrypt=new CryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write);
?//把加密流對(duì)象包裝成寫入流對(duì)象
?StreamWriter swEncrypt=new StreamWriter(csEncrypt);
?//寫入流對(duì)象寫入明文
?swEncrypt.WriteLine(strPlain);
?//寫入流關(guān)閉
?swEncrypt.Close();
?//加密流關(guān)閉
?csEncrypt.Close();
?//把內(nèi)存流轉(zhuǎn)換成字節(jié)數(shù)組,內(nèi)存流現(xiàn)在已經(jīng)是密文了
?byte[] bytesCipher=msEncrypt.ToArray();
?//內(nèi)存流關(guān)閉
?msEncrypt.Close();
?//把密文字節(jié)數(shù)組轉(zhuǎn)換為字符串,并返回
?return UnicodeEncoding.Unicode.GetString(bytesCipher);
}
///
///密文
///密鑰
///向量
///
public string DESDecrypt(string strCipher,string strDESKey,string strDESIV)
{
?//把密鑰轉(zhuǎn)換成字節(jié)數(shù)組
?byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
?//把向量轉(zhuǎn)換成字節(jié)數(shù)組
?byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
?//把密文轉(zhuǎn)換成字節(jié)數(shù)組
?byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);
?//聲明1個(gè)新的DES對(duì)象
?DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider();
?//開(kāi)辟一塊內(nèi)存流,并存放密文字節(jié)數(shù)組
?MemoryStream msDecrypt=new MemoryStream(bytesCipher);
?//把內(nèi)存流對(duì)象包裝成解密流對(duì)象
?CryptoStream csDecrypt=new CryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read);
?//把解密流對(duì)象包裝成讀出流對(duì)象
?StreamReader srDecrypt=new StreamReader(csDecrypt);
?//明文=讀出流的讀出內(nèi)容
?string strPlainText=srDecrypt.ReadLine();
?//讀出流關(guān)閉
?srDecrypt.Close();
?//解密流關(guān)閉
?csDecrypt.Close();
?//內(nèi)存流關(guān)閉
?msDecrypt.Close();
?//返回明文
?return strPlainText;
}?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

  DES算法   DES算法為密碼體制中的對(duì)稱密碼體制,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn),是1972年美國(guó)IBM公司研制的對(duì)稱密碼體制加密算法。 明文按64位進(jìn)行分組,密鑰長(zhǎng)64位,密鑰事實(shí)上

關(guān)鍵字: des算法 rsa算法

  DES全稱為Data EncrypTIon Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密

關(guān)鍵字: des des算法

  RSA算法   RSA公開(kāi)密鑰密碼體制。所謂的公開(kāi)密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導(dǎo)出解密密鑰在計(jì)算上是不可行的”密碼體

關(guān)鍵字: des算法

  摘要:在銀行金融界及非金融界,越來(lái)越多地用到了DES 算法, DES 全稱為Data EncrypTIon Standard即數(shù)據(jù)加密算法。下面來(lái)說(shuō)說(shuō)DES算法的應(yīng)用誤區(qū)及安全性分析。

關(guān)鍵字: des算法

目前主流的面向?qū)ο蟮木幊陶Z(yǔ)言C#、C++、Java; 一、C#的特點(diǎn): C#在帶來(lái)對(duì)應(yīng)用程序的快速開(kāi)發(fā)能力的同時(shí),并沒(méi)有犧牲C與C++程序員所關(guān)心的各種特性。它忠實(shí)地繼承了C和C++的優(yōu)點(diǎn)。如果你對(duì)C

關(guān)鍵字: c# 面向?qū)ο缶幊?/a>

作者:朱金燦來(lái)源:http://blog.csdn.net/clever101???????? 什么是好的開(kāi)發(fā)語(yǔ)言和好的開(kāi)發(fā)框架?這個(gè)問(wèn)題可能一千個(gè)人有一千種答案,我的答案是在滿足用戶效率需要的前提下

關(guān)鍵字: c# QT

關(guān)于邊緣改進(jìn)全局閾值處理基本實(shí)現(xiàn)是:?1.先計(jì)算其邊界,利用拉普拉斯或者梯度變換都以。?2.計(jì)算變化后邊界圖像的絕對(duì)值3.指定一個(gè)閾值(一般以百分比的形式指定,比如我指定90%,如果存在有灰度k,灰度

關(guān)鍵字: c# 函數(shù)

用過(guò)C#的人,一般都知道委托和事件。如果沒(méi)有用過(guò)C#,我在這里簡(jiǎn)單解釋一下委托,如果用過(guò)了,下面可以skip。委托是一個(gè)方法聲明,我們知道,在C語(yǔ)言中,可以通過(guò)函數(shù)指針表示一個(gè)地址的CALL方法,委托

關(guān)鍵字: c# c++

我剛用C#一個(gè)來(lái)月,可能理解得不對(duì),還請(qǐng)大家指教。讀懂文章你需要對(duì)C語(yǔ)言的指針有所理解。需要注意區(qū)別:對(duì)C\C++來(lái)說(shuō),任何類型都可以當(dāng)成C#的“引用類型”,因?yàn)橛兄羔槨!驹趦?nèi)存上】void?foo(

關(guān)鍵字: c#

最近有段時(shí)間因?yàn)橛袀€(gè)項(xiàng)目一直需要Socket數(shù)據(jù)傳輸。所以呢沒(méi)辦法就整了一套Socket最簡(jiǎn)單的版本出來(lái)。以便自己日后方便使用。我遇到的程序Socket是通過(guò)Tcp Ip的方式進(jìn)行數(shù)據(jù)傳輸?shù)?不多說(shuō)先

關(guān)鍵字: c# socket
關(guān)閉