999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET類庫(kù)實(shí)現(xiàn)RSA、DES加密應(yīng)用

2014-08-27 09:48:57章德賓
網(wǎng)絡(luò)空間安全 2014年8期
關(guān)鍵詞:教學(xué)

【 摘 要 】 以微軟基類庫(kù)為基礎(chǔ),設(shè)計(jì)和實(shí)現(xiàn)了一種基于MS.NET的RSA、DES加密應(yīng)用。信息安全愈來(lái)愈在經(jīng)濟(jì)社會(huì)中占有和發(fā)揮重要影響,信息管理專業(yè)中加密解密教學(xué)要貼近實(shí)際。這要求教學(xué)過(guò)程中須特別注意實(shí)踐動(dòng)手能力培養(yǎng),單純講解理論是不夠的。首先分析了RSA、DES的基本特征和可借用平臺(tái),然后基于.NET討論了實(shí)現(xiàn)的主要步驟和關(guān)鍵技術(shù),給出了核心部分代碼。經(jīng)驗(yàn)表明,只要引導(dǎo)科學(xué),學(xué)生能夠在高級(jí)平臺(tái)上,借助已有類庫(kù)撐握和實(shí)現(xiàn)對(duì)稱加密和RSA算法基本應(yīng)用。本文可供相關(guān)專業(yè)學(xué)習(xí)者在進(jìn)行加密學(xué)習(xí)時(shí)參考。

【 關(guān)鍵詞 】 微軟基類庫(kù);RSA;DES;教學(xué)

【 中圖分類號(hào) 】 TP393 【 文獻(xiàn)標(biāo)識(shí)碼 】 A

1 引言

加密解密是主動(dòng)信息安全中的重要內(nèi)容。加密解密部分不但需要對(duì)基本原理了解,更要能熟練撐握應(yīng)用現(xiàn)有編程平臺(tái)進(jìn)行加密解密程序的設(shè)計(jì)實(shí)現(xiàn)。但公開(kāi)文獻(xiàn)中對(duì)加密算法優(yōu)化改進(jìn)的多,對(duì)具體操作實(shí)現(xiàn)進(jìn)行討論的少,相關(guān)具有較高參考價(jià)值且操作性強(qiáng)的分析和研究更不多見(jiàn)。本文將選擇其中最為基礎(chǔ)和最重要的DES和RSA算法,探討實(shí)現(xiàn)方法與步驟。

由Riverst、Shami、Allandeman(RSA)所設(shè)計(jì)的基于大數(shù)分解困難的非對(duì)稱加密算法RSA,是當(dāng)今仍有較高可靠性且仍在廣泛使用的加密算法,也是非對(duì)稱算法中的重要代表。在非對(duì)稱加密算法中RSA是基礎(chǔ)性知識(shí),能應(yīng)用RSA進(jìn)行機(jī)密消息加密就能夠進(jìn)一步推廣到其他算法如DSA。對(duì)稱算法中,雖然DES(Data Encryption Standard)存在密鑰空間小、明文分段小,容易出現(xiàn)密文重復(fù)導(dǎo)致猜解等種種不足,似乎針以DES攻擊償試從來(lái)就斷過(guò),但其他如3DES算法核心思想是一致的。故當(dāng)前對(duì)稱算法中原理仍然以DES為主。

掌握DES、RSA后,就能夠舉一反三學(xué)習(xí)其他對(duì)稱、非對(duì)稱加密方法,因此建立DES、RSA算法及其應(yīng)用是必要的。本文首先分析了微軟.NET框架對(duì)加密解密部分的設(shè)計(jì)思路,介紹了實(shí)現(xiàn)DES和RSA的類庫(kù)原型,然后基于MS.NET類庫(kù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)分別應(yīng)用RSA和DES算法的加密解密程序。

2 加密算法和微軟加密基類庫(kù)

在Java和C#兩大主流開(kāi)發(fā)方向上,盡管C#因?yàn)楸仨氂玫轿④浕悗?kù)且屬商業(yè)化非開(kāi)源軟件,而受到諸多限制。但鑒于國(guó)內(nèi)Windows居于絕對(duì)統(tǒng)治地位,還是有相當(dāng)部分國(guó)內(nèi)軟件開(kāi)發(fā)是基于Windows平臺(tái),微軟加密服務(wù)的研究和用應(yīng)都不少。加密技術(shù)隨著互聯(lián)網(wǎng)和商業(yè)系統(tǒng)安全問(wèn)題的日益突出和國(guó)內(nèi)對(duì)系統(tǒng)安全重要性的認(rèn)識(shí),已經(jīng)逐步在各種實(shí)際應(yīng)用中開(kāi)展。在部分非計(jì)算機(jī)專業(yè)中學(xué)習(xí)加密解密,選C#在NET框架下開(kāi)發(fā)是可行的,也幾乎是唯一選項(xiàng)。私鑰加密算法使用單密鑰來(lái)加密和解密數(shù)據(jù)。私鑰加密算法的速度快(與公鑰算法相比),主要適用于對(duì)較大的數(shù)據(jù)流進(jìn)行加密轉(zhuǎn)換,在可加密數(shù)據(jù)容量方面基本沒(méi)有局限。

同一密鑰既能加密也同時(shí)能解密,密鑰本身的安全性及信任機(jī)制就非常重要。微軟在.NET加密命名空間中提供的私鑰加密算法主要有:AesManaged、DES、RC2、RijndaelManaged、TripleDES。其中DES是教材中講授內(nèi)容,AESmanaged、3DES與DES原理使用方法基本相同,掌握其中一種即能觸類旁通。

公鑰加密算法使用一個(gè)保密的私鑰和一個(gè)公開(kāi)的公鑰進(jìn)行加密解密數(shù)據(jù),因其密鑰不同又稱用非對(duì)稱密鑰算法。公鑰和私鑰相互對(duì)應(yīng),用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰加密(簽名)的數(shù)據(jù)只能用公鑰解密(驗(yàn)證),二者能互換。加密命名空間提供的公鑰算法主要有:DSA、RSA、ECDiffieHellman,其中最有代表性的即RSA。RSA 允許同時(shí)進(jìn)行加密和簽名,但 DSA 只能用于簽名,Diffie-Hellman 只能用于生成密鑰。通常情況下,公鑰算法比私鑰算法具有更多的使用限制。

3 基本實(shí)現(xiàn)方法

3.1 DES實(shí)現(xiàn)關(guān)鍵技術(shù)

DES是IBM在20世紀(jì)70年應(yīng)美國(guó)家標(biāo)準(zhǔn)局征集設(shè)計(jì)出的56位短密鑰分塊對(duì)稱加密方法,效率高,實(shí)現(xiàn)容易。1976年被國(guó)家標(biāo)準(zhǔn)局采納,作為非機(jī)密領(lǐng)域數(shù)據(jù)加密。盡管現(xiàn)在看來(lái)DES密鑰空間太小,易遭受暴力攻擊,但DES開(kāi)創(chuàng)了依附密鑰保密而不是算法保密的時(shí)代,DES是第一種進(jìn)入社會(huì)生活的對(duì)稱加密算法。通常在學(xué)習(xí)對(duì)稱加密時(shí)都會(huì)以DES為對(duì)象詳細(xì)分析和學(xué)習(xí)其算法。

有關(guān)DES算法的流程眾多文獻(xiàn)中都有,這里不再?gòu)?fù)述。下面以微軟加密命名空間為基礎(chǔ),討論其實(shí)現(xiàn)過(guò)程。首先定義加密明文和密文的文件流,定義分塊加密時(shí)所用的暫存緩沖區(qū)。

FileStream FSin = new FileStream(inName, FileMode.Open, FileAccess.Read);

FileStream FSout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);

FSout.SetLength(0); byte[] buff = new byte[100];

long FileInLen = FSin.Length; //明文總長(zhǎng).

int m; long enLen = 0; //已完成加密的明文長(zhǎng)度。

然后實(shí)例化DES加密類DES Crypto Service Provider,再將實(shí)參:加密輸現(xiàn)數(shù)據(jù)流,初始化參數(shù)等傳入加密對(duì)象。依次將明文分塊讀入已設(shè)計(jì)好的加密實(shí)例中,并將密文同步輸出到密文流,就能夠最終得到密文。

DES des = new DESCryptoServiceProvider();

CryptoStream encStream = new CryptoStream(FSout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);endprint

while (enLen < FileInLen )

{ m = FSin.Read(buff, 0, 100);

encStream.Write(buff, 0, len);enLen+=m;

}

DES的防猜測(cè)改進(jìn):關(guān)于desIV。前述DES加密中原型中,desKey為加密密鑰的二進(jìn)制, 但desIV在教材和DES算法中并未提及。這由DES算法本身的脆弱性及應(yīng)用特點(diǎn)決定。

DES算法因簡(jiǎn)單高效,主要用于大塊數(shù)據(jù)加密,加密過(guò)程明文被分割成均等大小的塊,每一塊單獨(dú)應(yīng)用DES算法。這樣,如果明文中存在重復(fù)塊,則輸出的密文流中也必然存在重復(fù)塊。如果明文是純文本,則由概率猜解推知原文的風(fēng)險(xiǎn)就非常之大,非法用戶獲知純文本塊結(jié)構(gòu)的任何信息,就可以利用該信息來(lái)解密已知的密碼文本塊,并有可能進(jìn)一步獲知密鑰。為了防范此風(fēng)險(xiǎn),實(shí)際應(yīng)用的DES算法中將前一個(gè)塊中的信息混合到下一個(gè)塊的加密過(guò)程中,這樣兩個(gè)相同的純文本塊的輸出就變得不同。因此,在第一塊加密時(shí),需指定初始向量,后續(xù)塊的“向量”由前一塊信息自動(dòng)生成。這個(gè)初始向量,就是desIV。

3.2 RSA實(shí)現(xiàn)關(guān)鍵技術(shù)

RSA是基于大素?cái)?shù)乘積分解難題而設(shè)計(jì)的加密方法,出于安全性需要素?cái)?shù)選擇不能太小,導(dǎo)致密鑰較長(zhǎng),故RSA加密效率低,主要用于密鑰傳遞等少量數(shù)據(jù)加密場(chǎng)合。通常,密文用DES加密,DES密鑰用RSA加密。以下為應(yīng)用RSA進(jìn)行字符串加密的源代碼,請(qǐng)注意RSA公鑰和私鑰的存貯方法。

UnicodeEncoding ByteConverter = new UnicodeEncoding();

byte[] dataToEncrypt = yteConverter.GetBytes(this.textBox_Ptext_RSA.Text .Trim ());

byte[] encryptedData,decryptedData;

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false);

this.textBox_Ctext_RSA.Text=BitConverter.ToString (encryptedData );

this.publickeyRSA = RSA.ExportParameters(false);

this.privatekeyRSA = RSA.ExportParameters(true);

StreamWriter mwriter = new StreamWriter("publickeyRSA.xml");

mwriter.Write(RSA .ToXmlString (false ));mwriter.Close();

mwriter = new StreamWriter("privatekeyRSA.xml");

mwriter.Write(RSA.ToXmlString(true ));mwriter.Close();

MessageBox.Show("已完成加密,PK和SK文件在當(dāng)前目錄下");

使用中,調(diào)用RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false)即將二進(jìn)制明文dataToEncrypt讀入RSA加密生成密文存入緩沖區(qū)decryptedData。

RSA加密中公鑰私鑰通過(guò)RSAParameters結(jié)構(gòu)存貯

RSAParameters publickeyRSA, privatekeyRSA;//構(gòu)造RSAParameters結(jié)構(gòu)

publickeyRSA = RSA.ExportParameters(false);//false僅輸出公鑰;true則將公私鑰一起輸出。

此公私鑰可直接作為參數(shù)傳遞給解密函數(shù)。

如果要序列化成文本存貯,則須通過(guò)RSA .ToXmlString (false )方法:

StreamWriter mwriter= new Stream Writer ("publickeyRSA.xml")

mwriter.Write(RSA .ToXmlString (false ));

mwriter.Close();

由經(jīng)此,可在程序根目錄下,生成只包括公鑰的publickey。

4 程序原型與應(yīng)用

圖1為制作完成的“獅子山加密工具包”功能界面。實(shí)現(xiàn)了DES算法對(duì)字符串、文件的加密解密;RSA算法對(duì)字符串的加密解密;也提供MD5、SHA1文件摘要功能。程序請(qǐng)見(jiàn)投稿附件 “獅子山加密.rar”。

在實(shí)際教學(xué)過(guò)程中,通過(guò)課堂講解和教師的實(shí)際動(dòng)手示范,所在專業(yè)(信息管理與信息系統(tǒng))學(xué)生中已經(jīng)有少數(shù)能夠制作類似簡(jiǎn)單的加解密程序。大多數(shù)學(xué)生也通過(guò)此案例講解,加深了對(duì)教材知識(shí)點(diǎn)的理解,更重要是是增強(qiáng)了大多數(shù)同學(xué)制用和應(yīng)用DES、RSA程序的信心,這對(duì)于提高專業(yè)學(xué)生的動(dòng)手能力,培養(yǎng)學(xué)生專業(yè)興趣是很有裨益的。

5 結(jié)束語(yǔ)

本文以微軟.NET框架類庫(kù)為基礎(chǔ),討論并展示和實(shí)現(xiàn)了DES、RSA的具體方法。在信息安全教學(xué)過(guò)程中,以此操作練習(xí)為基礎(chǔ),能避免單純的理論講解,使信息管理專業(yè)學(xué)生能夠在教師示范下,利用高級(jí)編程平臺(tái)已有類庫(kù)將對(duì)稱加密和RSA算法進(jìn)行基本應(yīng)用,從而提高非計(jì)算機(jī)專業(yè)學(xué)生加密解密知識(shí)點(diǎn)的學(xué)習(xí)效果。

參考文獻(xiàn)

[1] 秦艷琳,吳曉平.基于.NET的TripleDES算法在網(wǎng)絡(luò)傳輸中的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(11):53-55.

[2] 張基溫.信息安全與保密教程[M].北京:清華大學(xué)出版,2008.

[3] 陳開(kāi)顏,張鵬,鄧高明等.物理可觀測(cè)下DES的安全性研究[J].電子學(xué)報(bào),2009,37(11):2389-2395.

[4] 趙為強(qiáng),謝吉華 使用Microsoft Crypto API開(kāi)發(fā)基于USB電子鑰匙的CSP[J].2003,(11):33-34

[5] 熊小兵,高俊玲.微軟信息密碼系統(tǒng)及其應(yīng)用[J].計(jì)算機(jī)與信息技術(shù),2006,(7):73-76.

[6] 李顯峰,王淵,魏聰明.基于Microsoft .NET框架加密技術(shù)的SQL Server安全登錄機(jī)制研[J].電腦知識(shí)與技術(shù),2009,15(22):6151-6152.

[7] 盧開(kāi)澄.計(jì)算機(jī)密碼學(xué)[M].北京:清華出版社,2003.

作者簡(jiǎn)介:

章德賓(1975-),男,山東諸城人,博士,副教授;主要研究方向和關(guān)注領(lǐng)域:系統(tǒng)模擬、信息管理。endprint

while (enLen < FileInLen )

{ m = FSin.Read(buff, 0, 100);

encStream.Write(buff, 0, len);enLen+=m;

}

DES的防猜測(cè)改進(jìn):關(guān)于desIV。前述DES加密中原型中,desKey為加密密鑰的二進(jìn)制, 但desIV在教材和DES算法中并未提及。這由DES算法本身的脆弱性及應(yīng)用特點(diǎn)決定。

DES算法因簡(jiǎn)單高效,主要用于大塊數(shù)據(jù)加密,加密過(guò)程明文被分割成均等大小的塊,每一塊單獨(dú)應(yīng)用DES算法。這樣,如果明文中存在重復(fù)塊,則輸出的密文流中也必然存在重復(fù)塊。如果明文是純文本,則由概率猜解推知原文的風(fēng)險(xiǎn)就非常之大,非法用戶獲知純文本塊結(jié)構(gòu)的任何信息,就可以利用該信息來(lái)解密已知的密碼文本塊,并有可能進(jìn)一步獲知密鑰。為了防范此風(fēng)險(xiǎn),實(shí)際應(yīng)用的DES算法中將前一個(gè)塊中的信息混合到下一個(gè)塊的加密過(guò)程中,這樣兩個(gè)相同的純文本塊的輸出就變得不同。因此,在第一塊加密時(shí),需指定初始向量,后續(xù)塊的“向量”由前一塊信息自動(dòng)生成。這個(gè)初始向量,就是desIV。

3.2 RSA實(shí)現(xiàn)關(guān)鍵技術(shù)

RSA是基于大素?cái)?shù)乘積分解難題而設(shè)計(jì)的加密方法,出于安全性需要素?cái)?shù)選擇不能太小,導(dǎo)致密鑰較長(zhǎng),故RSA加密效率低,主要用于密鑰傳遞等少量數(shù)據(jù)加密場(chǎng)合。通常,密文用DES加密,DES密鑰用RSA加密。以下為應(yīng)用RSA進(jìn)行字符串加密的源代碼,請(qǐng)注意RSA公鑰和私鑰的存貯方法。

UnicodeEncoding ByteConverter = new UnicodeEncoding();

byte[] dataToEncrypt = yteConverter.GetBytes(this.textBox_Ptext_RSA.Text .Trim ());

byte[] encryptedData,decryptedData;

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false);

this.textBox_Ctext_RSA.Text=BitConverter.ToString (encryptedData );

this.publickeyRSA = RSA.ExportParameters(false);

this.privatekeyRSA = RSA.ExportParameters(true);

StreamWriter mwriter = new StreamWriter("publickeyRSA.xml");

mwriter.Write(RSA .ToXmlString (false ));mwriter.Close();

mwriter = new StreamWriter("privatekeyRSA.xml");

mwriter.Write(RSA.ToXmlString(true ));mwriter.Close();

MessageBox.Show("已完成加密,PK和SK文件在當(dāng)前目錄下");

使用中,調(diào)用RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false)即將二進(jìn)制明文dataToEncrypt讀入RSA加密生成密文存入緩沖區(qū)decryptedData。

RSA加密中公鑰私鑰通過(guò)RSAParameters結(jié)構(gòu)存貯

RSAParameters publickeyRSA, privatekeyRSA;//構(gòu)造RSAParameters結(jié)構(gòu)

publickeyRSA = RSA.ExportParameters(false);//false僅輸出公鑰;true則將公私鑰一起輸出。

此公私鑰可直接作為參數(shù)傳遞給解密函數(shù)。

如果要序列化成文本存貯,則須通過(guò)RSA .ToXmlString (false )方法:

StreamWriter mwriter= new Stream Writer ("publickeyRSA.xml")

mwriter.Write(RSA .ToXmlString (false ));

mwriter.Close();

由經(jīng)此,可在程序根目錄下,生成只包括公鑰的publickey。

4 程序原型與應(yīng)用

圖1為制作完成的“獅子山加密工具包”功能界面。實(shí)現(xiàn)了DES算法對(duì)字符串、文件的加密解密;RSA算法對(duì)字符串的加密解密;也提供MD5、SHA1文件摘要功能。程序請(qǐng)見(jiàn)投稿附件 “獅子山加密.rar”。

在實(shí)際教學(xué)過(guò)程中,通過(guò)課堂講解和教師的實(shí)際動(dòng)手示范,所在專業(yè)(信息管理與信息系統(tǒng))學(xué)生中已經(jīng)有少數(shù)能夠制作類似簡(jiǎn)單的加解密程序。大多數(shù)學(xué)生也通過(guò)此案例講解,加深了對(duì)教材知識(shí)點(diǎn)的理解,更重要是是增強(qiáng)了大多數(shù)同學(xué)制用和應(yīng)用DES、RSA程序的信心,這對(duì)于提高專業(yè)學(xué)生的動(dòng)手能力,培養(yǎng)學(xué)生專業(yè)興趣是很有裨益的。

5 結(jié)束語(yǔ)

本文以微軟.NET框架類庫(kù)為基礎(chǔ),討論并展示和實(shí)現(xiàn)了DES、RSA的具體方法。在信息安全教學(xué)過(guò)程中,以此操作練習(xí)為基礎(chǔ),能避免單純的理論講解,使信息管理專業(yè)學(xué)生能夠在教師示范下,利用高級(jí)編程平臺(tái)已有類庫(kù)將對(duì)稱加密和RSA算法進(jìn)行基本應(yīng)用,從而提高非計(jì)算機(jī)專業(yè)學(xué)生加密解密知識(shí)點(diǎn)的學(xué)習(xí)效果。

參考文獻(xiàn)

[1] 秦艷琳,吳曉平.基于.NET的TripleDES算法在網(wǎng)絡(luò)傳輸中的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(11):53-55.

[2] 張基溫.信息安全與保密教程[M].北京:清華大學(xué)出版,2008.

[3] 陳開(kāi)顏,張鵬,鄧高明等.物理可觀測(cè)下DES的安全性研究[J].電子學(xué)報(bào),2009,37(11):2389-2395.

[4] 趙為強(qiáng),謝吉華 使用Microsoft Crypto API開(kāi)發(fā)基于USB電子鑰匙的CSP[J].2003,(11):33-34

[5] 熊小兵,高俊玲.微軟信息密碼系統(tǒng)及其應(yīng)用[J].計(jì)算機(jī)與信息技術(shù),2006,(7):73-76.

[6] 李顯峰,王淵,魏聰明.基于Microsoft .NET框架加密技術(shù)的SQL Server安全登錄機(jī)制研[J].電腦知識(shí)與技術(shù),2009,15(22):6151-6152.

[7] 盧開(kāi)澄.計(jì)算機(jī)密碼學(xué)[M].北京:清華出版社,2003.

作者簡(jiǎn)介:

章德賓(1975-),男,山東諸城人,博士,副教授;主要研究方向和關(guān)注領(lǐng)域:系統(tǒng)模擬、信息管理。endprint

while (enLen < FileInLen )

{ m = FSin.Read(buff, 0, 100);

encStream.Write(buff, 0, len);enLen+=m;

}

DES的防猜測(cè)改進(jìn):關(guān)于desIV。前述DES加密中原型中,desKey為加密密鑰的二進(jìn)制, 但desIV在教材和DES算法中并未提及。這由DES算法本身的脆弱性及應(yīng)用特點(diǎn)決定。

DES算法因簡(jiǎn)單高效,主要用于大塊數(shù)據(jù)加密,加密過(guò)程明文被分割成均等大小的塊,每一塊單獨(dú)應(yīng)用DES算法。這樣,如果明文中存在重復(fù)塊,則輸出的密文流中也必然存在重復(fù)塊。如果明文是純文本,則由概率猜解推知原文的風(fēng)險(xiǎn)就非常之大,非法用戶獲知純文本塊結(jié)構(gòu)的任何信息,就可以利用該信息來(lái)解密已知的密碼文本塊,并有可能進(jìn)一步獲知密鑰。為了防范此風(fēng)險(xiǎn),實(shí)際應(yīng)用的DES算法中將前一個(gè)塊中的信息混合到下一個(gè)塊的加密過(guò)程中,這樣兩個(gè)相同的純文本塊的輸出就變得不同。因此,在第一塊加密時(shí),需指定初始向量,后續(xù)塊的“向量”由前一塊信息自動(dòng)生成。這個(gè)初始向量,就是desIV。

3.2 RSA實(shí)現(xiàn)關(guān)鍵技術(shù)

RSA是基于大素?cái)?shù)乘積分解難題而設(shè)計(jì)的加密方法,出于安全性需要素?cái)?shù)選擇不能太小,導(dǎo)致密鑰較長(zhǎng),故RSA加密效率低,主要用于密鑰傳遞等少量數(shù)據(jù)加密場(chǎng)合。通常,密文用DES加密,DES密鑰用RSA加密。以下為應(yīng)用RSA進(jìn)行字符串加密的源代碼,請(qǐng)注意RSA公鑰和私鑰的存貯方法。

UnicodeEncoding ByteConverter = new UnicodeEncoding();

byte[] dataToEncrypt = yteConverter.GetBytes(this.textBox_Ptext_RSA.Text .Trim ());

byte[] encryptedData,decryptedData;

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false);

this.textBox_Ctext_RSA.Text=BitConverter.ToString (encryptedData );

this.publickeyRSA = RSA.ExportParameters(false);

this.privatekeyRSA = RSA.ExportParameters(true);

StreamWriter mwriter = new StreamWriter("publickeyRSA.xml");

mwriter.Write(RSA .ToXmlString (false ));mwriter.Close();

mwriter = new StreamWriter("privatekeyRSA.xml");

mwriter.Write(RSA.ToXmlString(true ));mwriter.Close();

MessageBox.Show("已完成加密,PK和SK文件在當(dāng)前目錄下");

使用中,調(diào)用RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false)即將二進(jìn)制明文dataToEncrypt讀入RSA加密生成密文存入緩沖區(qū)decryptedData。

RSA加密中公鑰私鑰通過(guò)RSAParameters結(jié)構(gòu)存貯

RSAParameters publickeyRSA, privatekeyRSA;//構(gòu)造RSAParameters結(jié)構(gòu)

publickeyRSA = RSA.ExportParameters(false);//false僅輸出公鑰;true則將公私鑰一起輸出。

此公私鑰可直接作為參數(shù)傳遞給解密函數(shù)。

如果要序列化成文本存貯,則須通過(guò)RSA .ToXmlString (false )方法:

StreamWriter mwriter= new Stream Writer ("publickeyRSA.xml")

mwriter.Write(RSA .ToXmlString (false ));

mwriter.Close();

由經(jīng)此,可在程序根目錄下,生成只包括公鑰的publickey。

4 程序原型與應(yīng)用

圖1為制作完成的“獅子山加密工具包”功能界面。實(shí)現(xiàn)了DES算法對(duì)字符串、文件的加密解密;RSA算法對(duì)字符串的加密解密;也提供MD5、SHA1文件摘要功能。程序請(qǐng)見(jiàn)投稿附件 “獅子山加密.rar”。

在實(shí)際教學(xué)過(guò)程中,通過(guò)課堂講解和教師的實(shí)際動(dòng)手示范,所在專業(yè)(信息管理與信息系統(tǒng))學(xué)生中已經(jīng)有少數(shù)能夠制作類似簡(jiǎn)單的加解密程序。大多數(shù)學(xué)生也通過(guò)此案例講解,加深了對(duì)教材知識(shí)點(diǎn)的理解,更重要是是增強(qiáng)了大多數(shù)同學(xué)制用和應(yīng)用DES、RSA程序的信心,這對(duì)于提高專業(yè)學(xué)生的動(dòng)手能力,培養(yǎng)學(xué)生專業(yè)興趣是很有裨益的。

5 結(jié)束語(yǔ)

本文以微軟.NET框架類庫(kù)為基礎(chǔ),討論并展示和實(shí)現(xiàn)了DES、RSA的具體方法。在信息安全教學(xué)過(guò)程中,以此操作練習(xí)為基礎(chǔ),能避免單純的理論講解,使信息管理專業(yè)學(xué)生能夠在教師示范下,利用高級(jí)編程平臺(tái)已有類庫(kù)將對(duì)稱加密和RSA算法進(jìn)行基本應(yīng)用,從而提高非計(jì)算機(jī)專業(yè)學(xué)生加密解密知識(shí)點(diǎn)的學(xué)習(xí)效果。

參考文獻(xiàn)

[1] 秦艷琳,吳曉平.基于.NET的TripleDES算法在網(wǎng)絡(luò)傳輸中的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(11):53-55.

[2] 張基溫.信息安全與保密教程[M].北京:清華大學(xué)出版,2008.

[3] 陳開(kāi)顏,張鵬,鄧高明等.物理可觀測(cè)下DES的安全性研究[J].電子學(xué)報(bào),2009,37(11):2389-2395.

[4] 趙為強(qiáng),謝吉華 使用Microsoft Crypto API開(kāi)發(fā)基于USB電子鑰匙的CSP[J].2003,(11):33-34

[5] 熊小兵,高俊玲.微軟信息密碼系統(tǒng)及其應(yīng)用[J].計(jì)算機(jī)與信息技術(shù),2006,(7):73-76.

[6] 李顯峰,王淵,魏聰明.基于Microsoft .NET框架加密技術(shù)的SQL Server安全登錄機(jī)制研[J].電腦知識(shí)與技術(shù),2009,15(22):6151-6152.

[7] 盧開(kāi)澄.計(jì)算機(jī)密碼學(xué)[M].北京:清華出版社,2003.

作者簡(jiǎn)介:

章德賓(1975-),男,山東諸城人,博士,副教授;主要研究方向和關(guān)注領(lǐng)域:系統(tǒng)模擬、信息管理。endprint

猜你喜歡
教學(xué)
微課讓高中數(shù)學(xué)教學(xué)更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
「微寫作」教學(xué)實(shí)踐的思考
“以讀促寫”在初中寫作教學(xué)中的應(yīng)用
如何讓高中生物教學(xué)變得生動(dòng)有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
談高中音樂(lè)欣賞教學(xué)中的“聽(tīng)、看、想、說(shuō)、動(dòng)”
“自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
東方教育(2017年19期)2017-12-05 15:14:48
對(duì)外漢語(yǔ)教學(xué)中“想”和“要”的比較
對(duì)識(shí)譜教學(xué)的認(rèn)識(shí)與思考
《可以預(yù)約的雪》教學(xué)探索與思考
對(duì)高等數(shù)學(xué)教學(xué)的一些思考
主站蜘蛛池模板: 亚洲精品国产首次亮相| 沈阳少妇高潮在线| 国产精品永久不卡免费视频| 99视频在线免费观看| 特级精品毛片免费观看| 亚洲成人福利网站| 成年看免费观看视频拍拍| 日韩欧美成人高清在线观看| 色婷婷在线影院| 中文字幕资源站| 狠狠亚洲婷婷综合色香| 色妞www精品视频一级下载| 国产乱人伦偷精品视频AAA| 欧美福利在线| 老司国产精品视频| 国产欧美日韩专区发布| 中日韩一区二区三区中文免费视频| 伊人丁香五月天久久综合| 日韩二区三区无| 精品国产福利在线| 久久亚洲综合伊人| 91亚洲视频下载| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产夜色视频| 爱爱影院18禁免费| 国产精品视频白浆免费视频| 91色国产在线| 午夜精品福利影院| 亚洲福利片无码最新在线播放| 久久久久亚洲AV成人人电影软件 | 伊人久久大香线蕉成人综合网| 日韩毛片免费视频| 亚洲va欧美ⅴa国产va影院| 亚洲一区色| 人妻少妇久久久久久97人妻| 亚洲第一页在线观看| 伊人成人在线| 丰满人妻中出白浆| 人妻一区二区三区无码精品一区| 国产一区二区三区夜色| 欧美福利在线观看| a国产精品| 亚洲人人视频| 国产h视频在线观看视频| 666精品国产精品亚洲| 99久久精品免费看国产电影| 精品国产中文一级毛片在线看| 99激情网| 真人免费一级毛片一区二区| 欧美色综合网站| 国产精品自在自线免费观看| 女高中生自慰污污网站| 日本成人不卡视频| 日韩成人高清无码| 国产白浆一区二区三区视频在线| 欧美午夜视频| 国产无套粉嫩白浆| 一级毛片在线播放| 99偷拍视频精品一区二区| 欧美伊人色综合久久天天| 精品99在线观看| 国产内射一区亚洲| 午夜欧美在线| 亚洲国产成人自拍| AV无码一区二区三区四区| 欧美日韩激情在线| 呦系列视频一区二区三区| 性69交片免费看| 欧美a在线看| 国产永久免费视频m3u8| 网友自拍视频精品区| 97se亚洲综合在线天天| 成人噜噜噜视频在线观看| 国产福利在线观看精品| 国产一级小视频| 国产午夜福利亚洲第一| 中文字幕日韩视频欧美一区| 伊人久久大香线蕉综合影视| 亚洲高清免费在线观看| 欧美日韩成人| 精品一区二区三区波多野结衣| 在线观看国产黄色|