亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C#.Net的加密解密研究與實(shí)現(xiàn)

        2012-05-05 07:48:30霍冰鵬
        關(guān)鍵詞:字符串數(shù)字簽名數(shù)組

        霍冰鵬

        (晉城職業(yè)技術(shù)學(xué)院 信息中心,山西 晉城048026)

        0 引言

        隨著計(jì)算機(jī)技術(shù)和通訊技術(shù)的發(fā)展,網(wǎng)絡(luò)信息安全問(wèn)題越發(fā)突出,2011年12月21日,國(guó)內(nèi)知名程序員網(wǎng)站CSDN遭到黑客侵襲,致使600余萬(wàn)明文注冊(cè)的郵箱賬號(hào)與密碼遭到泄露。隨后人人網(wǎng)、世紀(jì)佳緣、貓撲論壇等網(wǎng)站也被刷庫(kù),共導(dǎo)致近4 300萬(wàn)用戶資料被泄露,引發(fā)了網(wǎng)民的熱議和人們對(duì)網(wǎng)絡(luò)安全以及網(wǎng)站安全管理的憂慮與思考。為防止信息泄漏,需要對(duì)數(shù)據(jù)進(jìn)行加密保護(hù),本文采用C#.Net作為程序開發(fā)語(yǔ)言,實(shí)現(xiàn)了MDB5、RSA、DES算法的加密。

        1 MD5加密算法

        MD5[1]的全稱是 Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest開發(fā),經(jīng)MD2、MD3和MD4發(fā)展而來(lái)。

        MD5 主要用途[2]:

        (1)對(duì)一段信息生成信息摘要,該摘要對(duì)該信息具有唯一性,可以作為數(shù)字簽名;

        (2)用于驗(yàn)證文件的有效性(是否有丟失或損壞的數(shù)據(jù));

        (3)對(duì)用戶密碼的加密;

        (4)在哈希函數(shù)中計(jì)算散列值。

        從以上用途中我們看到,由于算法的某些不可逆特征[3,4],在加密應(yīng)用上有較好的安全性。通過(guò)使用MD5加密算法,我們輸入一個(gè)任意長(zhǎng)度的字節(jié)串,都會(huì)生成一個(gè)128位的整數(shù)。MD5被廣泛的用于密碼加密,其應(yīng)用演示效果及源程序代碼如下:

        引入命名空間:

        using System.Security;

        using System.Security.Cryptography;

        private void btn_Click(object sender,EventArgs e)

        {MD5 md5=new MD5CryptoServiceProvider();

        byte[]palindata=Encoding.Default.GetBytes(txtyuan.Text);

        //將要加密的字符串轉(zhuǎn)換為字節(jié)數(shù)組

        byte[]encryptdata=md5.ComputeHash(palindata);

        //將字符串加密后也轉(zhuǎn)換為字符數(shù)組

        txtjiami.Text = Convert.ToBase64String(encryptdata);

        //將加密后的字節(jié)數(shù)組轉(zhuǎn)換為加密字符串

        }

        該算法在加密前要將加密字符串轉(zhuǎn)為字節(jié)數(shù)組,加密后再生成密文的字節(jié)數(shù)據(jù),然后轉(zhuǎn)化為密文。

        3 RSA加密算法

        RSA[6]加密算法有兩種加密算法,對(duì)稱加密與非對(duì)稱加密。

        對(duì)稱加密:含有一個(gè)稱為密鑰的東西,在消息發(fā)送前使用密鑰對(duì)消息進(jìn)行加密,在對(duì)方收到消息之后,使用相同的密鑰進(jìn)行解密。

        非對(duì)稱加密:加密和解密使用不同的密鑰的一類加密算法。這類加密算法通常有兩個(gè)密鑰A和B,使用密鑰A加密數(shù)據(jù)得到的密文,只有密鑰B可以進(jìn)行解密操作(即使密鑰A也無(wú)法解密);相反,使用了密鑰B加密數(shù)據(jù)得到的密文,只有密鑰A可以解密。這兩個(gè)密鑰分別稱為私鑰和公鑰,顧名思義,私鑰就是你個(gè)人保留,不能公開的密鑰,而公鑰則是公開給加解密操作的另一方的。根據(jù)不同用途,對(duì)數(shù)據(jù)進(jìn)行加密所使用的密鑰也不相同(有時(shí)用公鑰加密,私鑰解密;有時(shí)用私鑰加密,公鑰解密)。非對(duì)稱加密的代表算法是RSA算法。

        RSA加密算法。RSA是目前最有影響力的公鑰加密算法,多用于數(shù)據(jù)加密和數(shù)字簽名。該算法應(yīng)用廣泛但仍存在有一些弊端,它產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密,分組長(zhǎng)度太大等。

        下面通過(guò)示例演示使用RSA加密、解密:

        先創(chuàng)建一個(gè)全局的CspParameters對(duì)象param

        加密:

        private void btnjm_Click (object sender,EventArgs e)

        {param=new CspParameters();

        param.KeyContainerName= “Olive”;

        //密匙容器的名稱,保持加密解密一致才能解密成功

        using (RSACryptoServiceProvider rsa=new RSACryptoServiceProvider(param))

        {byte[]plaindata=Encoding.Default.GetBytes(txtyuan.Text);

        //將要加密的字符串轉(zhuǎn)換為字節(jié)數(shù)組

        byte[]encryptdata=rsa.Encrypt(plaindata,false);

        //將加密后的字節(jié)數(shù)據(jù)轉(zhuǎn)換為新的加密字節(jié)數(shù)組

        txtjiami.Text =Convert.ToBase64String(encryptdata);

        //將加密后的字節(jié)數(shù)組轉(zhuǎn)換為字符串

        }}

        解密:

        private void btnjiemi_Click (objectsender,EventArgs e)

        {param=new CspParameters();

        param.KeyContainerName= “Olive”;

        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))

        {byte[]encryptdata=Convert.FromBase64String(this.txtjiami.Text);

        byte[]decryptdata=rsa.Decrypt(encryptdata,false);

        txthjiemi.Text = Encoding.Default.GetString(decryptdata);

        }}

        效果如圖:

        以下程序?yàn)镽SA加密算法產(chǎn)出公匙和私匙的代碼。

        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

        using (StreamWriter sw=new StreamWriter(@“D:PublicKey.xml”))//產(chǎn)生公匙

        {sw.WriteLine(rsa.ToXmlString(false));}

        using (StreamWriter sw=new StreamWriter(@“D:PrivateKey.xml”))

        //產(chǎn)生私匙(也包含私匙)

        {sw.WriteLine(rsa.ToXmlString(false));

        }

        4 DES加密算法

        DES加密:使用一個(gè)56位的密鑰以及附加的8位奇偶校驗(yàn)位,產(chǎn)生最大64位的分組大小。這是一個(gè)迭代的分組密碼,使用 Feistel技術(shù),其中將加密的文本塊分成兩半,使用子密鑰對(duì)其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交換這兩半,這一過(guò)程會(huì)繼續(xù)下去,但最后一個(gè)循環(huán)不交換。DES使用16個(gè)循環(huán),使用異或、置換、代換、移位操作四種基本運(yùn)算[5]。程序如下。

        先定義一個(gè)全局的字節(jié)數(shù)組和實(shí)例化一個(gè)全局的DESCryptoServiceProvider對(duì)象

        byte[]buffer;

        DESCryptoServiceProvider DesCSP = new DESCryptoServiceProvider();

        加密:

        private void btn_Click(object sender,EventArgs e)

        {MemoryStream ms=new MemoryStream();//先創(chuàng)建一個(gè)內(nèi)存流

        CryptoStream cryStream=new CryptoStream(ms,DesCSP.CreateEncryptor(),CryptoStreamMode.Write);//將內(nèi)存流連接到加密轉(zhuǎn)換流

        StreamWriter sw=new StreamWriter(cryStream);

        sw.WriteLine(txtyuan.Text);//將要加密的字符串寫入加密轉(zhuǎn)換流

        sw.Close();

        cryStream.Close();

        buffer=ms.ToArray();//將加密后的流轉(zhuǎn)換為字節(jié)數(shù)組

        txtjiami.Text=Convert.ToBase64String(buffer);

        //將加密后的字節(jié)數(shù)組轉(zhuǎn)換為字符串

        }

        解密:

        private void btn_Click(object sender,EventArgs e)

        {MemoryStream ms=new MemoryStream(buffer);

        //將加密后的字節(jié)數(shù)據(jù)加入內(nèi)存流中CryptoStream cryStream=new CryptoStream(ms,DesCSP.CreateDecryptor(),CryptoStreamMode.Read);//內(nèi)存流連接到解密流中

        StreamReader sr = new StreamReader(cryStream);

        txthjiemi.Text=sr.ReadLine();//將解密流讀取為字符串

        sr.Close();

        cryStream.Close();

        ms.Close();

        }

        演示效果如圖:

        5 結(jié)論

        在互聯(lián)網(wǎng)的各種應(yīng)用中,雖采用了口令加密技術(shù),但在多種情況下大量的重要數(shù)據(jù)都是以明文傳輸。本文介紹了幾種常用基于C#.Net的加密方法,有助于構(gòu)建更安全的互聯(lián)網(wǎng)應(yīng)用程序。

        [1]尚華益,姚國(guó)祥,官全龍.基于Blowfish和MD5的混合加密方案[J].計(jì)算機(jī)應(yīng)用研究,2010,27(1):231-233.

        [2]柏銀,李志蜀,朱興東.MD5算法及其在遠(yuǎn)程身份認(rèn)證中的應(yīng) 用[J].四川 大學(xué)學(xué)報(bào):自 然科學(xué)版,2006,43(2):205-309.

        [3]張裔智,湯小斌,趙毅.MD5算法研究[J].計(jì)算機(jī)科學(xué),2008,35(7):295-297.

        [5]易紅軍,佘名高.MD5算法與數(shù)字簽名[J].計(jì)算機(jī)與數(shù)字工程,2006,34(5):44-46.

        [6]魏鶴君,呂笑倩,鄭彩平.基于RSA的數(shù)字簽名技術(shù)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007(8):43-44.

        猜你喜歡
        字符串數(shù)字簽名數(shù)組
        JAVA稀疏矩陣算法
        淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
        尋找勾股數(shù)組的歷程
        一種新的基于對(duì)稱性的字符串相似性處理算法
        基于數(shù)字簽名和HSM的數(shù)據(jù)庫(kù)篡改檢測(cè)機(jī)制
        依據(jù)字符串匹配的中文分詞模型研究
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        一種針對(duì)Java中字符串的內(nèi)存管理方案
        成人久久久久久久久久久| 国产自产二区三区精品| 久久麻传媒亚洲av国产| 精品国产精品三级在线专区| 欧美大屁股xxxx高潮喷水| 中文字幕日本人妻久久久免费| 国产精品欧美一区二区三区| 中文字幕爆乳julia女教师| 亚洲av区无码字幕中文色| 欧美在线综合| 欧美亚洲国产片在线播放| 最近免费中文字幕| 夜夜综合网| 国产在线h视频| av东京热一区二区三区| 综合中文字幕亚洲一区二区三区 | 永久无码在线观看| 亚洲国产剧情在线精品视| 美女一区二区三区在线观看视频 | 蜜桃视频网站在线观看一区| 97久久婷婷五月综合色d啪蜜芽| 日本熟妇色xxxxx日本妇| 被黑人猛躁10次高潮视频| 久久天天躁狠狠躁夜夜96流白浆 | 大陆成人精品自拍视频在线观看| 国偷自拍av一区二区三区| 精品国产综合区久久久久久 | 激情伊人五月天久久综合| 日本黄页网站免费观看| 爱a久久片| 午夜福利影院不卡影院| 国产精品综合色区av| 亚洲国产精品久久又爽av| 国产又大又硬又粗| 日产国产精品亚洲系列| 成人精品一级毛片| 日韩精品免费在线视频| 日本淫片一区二区三区| 男女男精品视频网站免费看| 久久久av精品波多野结衣| 97se亚洲国产综合自在线图片|