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

        ?

        解密.NET框架中的加密與解密

        2012-09-10 03:34:18俞志兵
        中國教育技術(shù)裝備 2012年28期
        關(guān)鍵詞:加密算法非對稱數(shù)據(jù)流

        俞志兵

        南京市天印高級中學(xué) 南京 211151

        作者:俞志兵,本科,中學(xué)一級教師,長期從事高中信息技術(shù)教學(xué)工作,任信息技術(shù)教研組組長,擅長網(wǎng)站開發(fā)。

        1.NET中加密算法的形式及其概況

        總的來說,加密有兩種形式:1)對稱加密,加密和解密時使用的是同一個密鑰;2)非對稱加密,加密和解密時將使用不同的密鑰。通常是用公鑰作為加密密鑰,任何人都可以用它來加密信息。私鑰才是用來解密密鑰的,它只能用來對使用其對應(yīng)的公鑰加密的數(shù)據(jù)進行解密。對稱加密相對而言速度更快,但由于加密者和解密者都知道這個唯一的密鑰,因此安全性更差一些。非對稱加密則通過密鑰的方法來解決這個問題,由于私鑰永遠不會暴露,所以第三方更加難以破解其加密的信息。由于密鑰的方法需要更長的處理時間,因此通常的方法是使用非對稱密鑰加密機制在因特網(wǎng)上實現(xiàn)對對稱密鑰的加密,這樣就使這個用于加密的密鑰更安全,不會暴露給第三方。

        在.NET的命名空間System.Security.Cryptography中提供了幾種算法。可用的非對稱算法包括DSA(Digital Signature Algorithm,數(shù)字簽名算法)和RSA(Rivest-Shamir-Adleman算法,它由3個發(fā)明者的名字組成:Ronald Rivest、Adi Shamir和Leonard Adleman)兩種。其中DSA只能夠用來對數(shù)據(jù)進行“簽名”,因此通常用來做驗證,而RSA更加通用。DSA現(xiàn)在是美國政府使用的數(shù)字驗證的標(biāo)準(zhǔn)。

        .NET框架中可以找到的對稱加密算法包括DES(Data Encryption Standard,數(shù)字加密標(biāo)準(zhǔn))、Triple DES(3DES)、RC2(Ron’s Code或Rivest’s Cipher,都是源于Ronald Rivest)和Rijndael(源于其發(fā)明者John Daemem、Vincent Rijman的名字)。DES成為標(biāo)準(zhǔn)已經(jīng)有一段時間,盡管它也不斷發(fā)生變化。3DES和RC2都是DES的變種。3DES是通過對數(shù)據(jù)進行3次獨立的DES加密,扣除奇偶校驗位,其總的密鑰長度也達到168位。RC2的密鑰長度是可以變化的,最大可以達到128(如果要更長的密鑰,可以使用RC3、RC4等),因此根據(jù)密鑰長度不同,可能比DES更脆弱或更強壯。Rijndael是一種完全不同的加密方法,現(xiàn)在已經(jīng)被接納為新的AES(高級加密標(biāo)準(zhǔn))。該標(biāo)準(zhǔn)的目標(biāo)是替代DES。

        2 對加密、解密算法的步驟描述

        由于.NET框架中的類是針對數(shù)據(jù)流進行優(yōu)化的,因此需要花一些時間來處理數(shù)據(jù)格式轉(zhuǎn)換。同樣需要定義一個密鑰以及執(zhí)行加密或解密操作的初始向量(IV)。需要使用IV應(yīng)歸究于加密的本性:為一串?dāng)?shù)據(jù)位計算加密值時,將會用到前面一串?dāng)?shù)據(jù)位的加密值。由于在加密開始時并不存在這些值,因此用IV來代替。在實踐中,IV和密鑰都將表示為一個字節(jié)的數(shù)組,而在DES加密中,其長度是64位(8字節(jié)),由于解密算法與加密算法類似,加密需要寫入加密數(shù)據(jù)的目標(biāo)數(shù)據(jù)流,而解密需要一個從中讀取已加密數(shù)據(jù)的源數(shù)據(jù)流。

        對一個字符串進行加密所需的步驟:將源字符串轉(zhuǎn)換為一個字節(jié)數(shù)組;初始化一個加密算法類;使用這個加密算法類來生成一個加密者(encryptor)對象,實現(xiàn)Icrypto-Transform接口,它需要密鑰和IV值;使用加密者對象來初始化一個密文數(shù)據(jù)流(CryptoStream對象),該數(shù)據(jù)流還需要知道要加密哪些數(shù)據(jù),以及用來寫入加密數(shù)據(jù)的目標(biāo)數(shù)據(jù)流;使用這個密文數(shù)據(jù)流生成已加密數(shù)據(jù),并寫到由前面創(chuàng)建的源字節(jié)數(shù)組創(chuàng)建的目標(biāo)內(nèi)存數(shù)據(jù)流中;獲取存儲在這個數(shù)據(jù)流中的字節(jié)數(shù)據(jù);將這些字節(jié)數(shù)據(jù)轉(zhuǎn)換成一個字符串。

        解密所采用的模式與加密類似:將源字符串轉(zhuǎn)換成一個字節(jié)數(shù)組;根據(jù)這個字節(jié)數(shù)組填充內(nèi)存數(shù)據(jù)流的值;初始化一個加密算法類;使用加密算法類生成一個解密者(decryptor)對象,實現(xiàn)ICryptoTransform接口,它需要密鑰和IV值;使用解密者對象來初始化一個密文數(shù)據(jù)流(ICryptoStream)對象,該數(shù)據(jù)流還需要知道解密什么數(shù)據(jù),并需要一個從中讀取已加密數(shù)據(jù)的源數(shù)據(jù)流;使用密文數(shù)據(jù)流來讀取已經(jīng)解密數(shù)據(jù)(可以使用StreamReader.ReadToEnd方法來獲取字符串型結(jié)果)。

        3 根據(jù)加密算法寫出加密方法

        限于篇幅,本文只給出加密方法,讀者可以根據(jù)加密方法自己寫出解密方法。

        在網(wǎng)站根目錄下,新建文件夾(SecurityLib),在這個文件夾中新建類,命名為StringEncryptor。其Encrypt()方法如下所示:

        public static string Encrypt(string sourceData)

        {

        set key and initialization vector values

        byte[] key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

        byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

        try

        { convert data to byte array

        byte[] sourceDataBytes =

        System.Text.ASCIIEncoding.ASCII.GetBytes(sourceData);

        get target memory stream

        MemoryStream tempStream = new MemoryStream();

        get encryptor and encryption stream

        DESCryptoServiceProvider encryptor =

        new DESCryptoServiceProvider();

        CryptoStream encryptionStream =

        new CryptoStream(tempStream,

        encryptor.CreateEncryptor(key, iv),

        CryptoStreamMode.Write);

        encrypt data

        encryptionStream.Write(sourceDataBytes, 0,

        sourceDataBytes.Length);

        encryptionStream.FlushFinalBlock();

        put data into byte array

        byte[] encryptedDataBytes = tempStream.GetBuffer();

        convert encrypted data into string

        return Convert.ToBase64String(encryptedDataBytes, 0,(int)tempStream.Length);

        }

        }

        4 加密與解密在.NET中的測試

        1)網(wǎng)站根目錄下新建Web頁面,命名為SecurityTest.asp,做如下編輯:

        Enter data to encrypt:


        Enter data to decrypt:



        2)修改SecurityTest.aspx.cs中的代碼:

        using System;

        using System.Text;

        using SecurityLib;

        protected void processButton_Click(object sender, EventArgs e)

        {

        string stringToEncrypt = encryptBox.Text;

        string stringToDecrypt = decryptBox.Text;

        string encryptedString =

        StringEncryptor.Encrypt(stringToEncrypt);

        if (stringToDecrypt == "")

        {

        stringToDecrypt = encryptedString;

        }

        string decryptedString =

        StringEncryptor.Decrypt(stringToDecrypt);

        StringBuilder sb = new StringBuilder();

        sb.Append(“Encrypted data: “);

        sb.Append(encryptedString);

        sb.Append(“
        Decrypted data: “);

        sb.Append(decryptedString);

        result.Text = sb.ToString();

        }

        3)在瀏覽器中運行SecurityTest.aspx,在第一個要加密的文本框中輸入“i am yuzhibing”,然后點擊Process按鈕,其結(jié)果如圖1所示。

        5 加密與解密在實踐中的應(yīng)用

        現(xiàn)在絕大部分電子商務(wù)網(wǎng)站或平臺,都需要用戶檔案系統(tǒng),需要用戶編輯客戶詳情,包括信用卡詳情。信用卡中的信息出于安全因素考慮,必須加密后保存到數(shù)據(jù)層的數(shù)據(jù)庫中。登錄客戶編輯自己的信息,就需要從數(shù)據(jù)庫中解密到表示層。

        [1]鄭齊心,房大偉,劉云峰.ASP.NET項目開發(fā)案例全程實錄[M].2版.北京:清華大學(xué)出版社,2011.

        [2]趙松濤,陳小龍.Visual Studio 2005+SQL Server2005數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2007.

        [3]Darie C, Watson K. ASP.NET 2.0電子商務(wù)開發(fā)實戰(zhàn)[M].北京:人民郵電出版社,2007.

        猜你喜歡
        加密算法非對稱數(shù)據(jù)流
        汽車維修數(shù)據(jù)流基礎(chǔ)(下)
        非對稱Orlicz差體
        一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機制
        點數(shù)不超過20的旗傳遞非對稱2-設(shè)計
        基于小波變換和混沌映射的圖像加密算法
        基于數(shù)據(jù)流聚類的多目標(biāo)跟蹤算法
        非對稱負載下矩陣變換器改進型PI重復(fù)控制
        電測與儀表(2015年4期)2015-04-12 00:43:04
        Hill加密算法的改進
        北醫(yī)三院 數(shù)據(jù)流疏通就診量
        對稱加密算法RC5的架構(gòu)設(shè)計與電路實現(xiàn)
        亚洲精品视频1区2区| 91精品国产色综合久久不卡蜜| 人妻无码中文专区久久AV| 美利坚合众国亚洲视频| 人人妻人人澡人人爽国产| 国产亚洲午夜高清国产拍精品 | 91人妻人人做人人爽九色| 日本h片中文字幕在线| 亚洲色在线v中文字幕| 无码精品一区二区三区超碰| av免费在线观看在线观看| 国产精品亚洲av三区亚洲| 亚洲av日韩综合一区在线观看 | 国产免费一区二区三区精品视频| 日本入室强伦姧bd在线观看| 欧美性福利| av天堂一区二区三区| 国产精品沙发午睡系列| 国产激情精品一区二区三区| 亚洲一区二区自拍偷拍| 日本亚洲视频免费在线看| 欧美老妇多毛xxxxx极瑞视频| 狠狠躁夜夜躁av网站中文字幕| 高清破外女出血av毛片| 久久精品伊人无码二区| 手机在线国产福利av| 免费无码又爽又刺激网站直播| 人妻被黑人粗大的猛烈进出| 亚洲AV成人无码天堂| 成人自拍一二在线观看| a级毛片免费完整视频| 国产一区二区三区小说| 亚洲一区二区三区自拍麻豆| 久久久久88色偷偷| 无遮挡亲胸捏胸免费视频| 日韩国产有码精品一区二在线| 国产在线视频一区二区天美蜜桃 | 国产美女被遭强高潮露开双腿 | 在教室伦流澡到高潮h麻豆| 国产精品国产三级国产an| 亚洲人成网站色在线入口口|