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

        ?

        數(shù)據(jù)加密中的DES加密算法詳解

        2009-12-31 00:00:00李新艷
        商場現(xiàn)代化 2009年26期

        [摘要] 本文詳細介紹了DES數(shù)據(jù)加密算法的原理,并給出了一個例子演示了如何使用c#中的加密包進行DES算法加密,最后對DES進行了評價。

        [關(guān)鍵詞] 加密 對稱 非對稱 DES 密鑰 明文 密文

        從最初的保密通信發(fā)展到目前的網(wǎng)絡(luò)信息加密,信息加密技術(shù)一直伴隨著信息技術(shù)的發(fā)展而發(fā)展。作為計算機信息保護的最實用和最可靠的方法,信息加密技術(shù)被廣泛應(yīng)用到信息安全的各個領(lǐng)域。信息加密技術(shù)是一門涉及數(shù)學(xué)、密碼學(xué)和計算機的交叉學(xué)科?,F(xiàn)代密碼學(xué)的發(fā)展,使信息加密技術(shù)已經(jīng)不再依賴于對加密算法本身的保密,而是通過在統(tǒng)計學(xué)意義上提高破解的成本來提供高加密算法的安全性。

        密碼學(xué)是一門古老而又年輕的科學(xué),它用于保護軍事和外交通信,可追溯到幾千年前。1976年Diffie和Hellman的“密碼學(xué)的新方向”一文引發(fā)的密碼學(xué)的一場革命,開創(chuàng)了公鑰密碼學(xué)的新紀元。

        常用加密算法主要用來對敏感數(shù)據(jù)、摘要、簽名等信息進行加密。按照密鑰方式劃分,可分為對稱加密算法和非對稱加密算法。

        一、對稱加密算法

        對稱加密算法有時又叫做傳統(tǒng)密碼算法,加密密鑰可以從解密密鑰中推導(dǎo)出來,解密密鑰也可以從加密密鑰中推導(dǎo)出來。在大多數(shù)的對稱算法中,加密密鑰和解密密鑰是相同的,因此也成為秘密密鑰算法或者單密鑰算法。它要求發(fā)送發(fā)和接收方在安全通信之前先商定一個密鑰。對稱算法的安全性依賴于密鑰,所以密鑰的保密性對通信至關(guān)重要。對稱加密算法主要有分組加密和流加密兩類。分組加密是指將明文分成固定商都的組,用同一密鑰分別對每一組加密,輸出固定長度的密文,典型代表:DES、3DES、IDEA。

        二、非對稱加密算法

        非對稱加密算法有時又叫做公開密鑰算法。其中用到兩個密鑰。一個是公共的,一個事私有的。一個密鑰用于加密,另一個密鑰用于解密。兩個密鑰不能夠互相推導(dǎo)。常用的非對稱加密算法有RSA公鑰算法、Diffie-Hellman算法和ECC橢圓曲線密碼。

        我們詳細分析一下DES加密算法的處理過程。

        DES加密算法是分組加密算法,明文以64位為單位分成塊。64位數(shù)據(jù)在64位密鑰的控制下,經(jīng)過初始變換后,進行16輪加密迭代:64位數(shù)據(jù)被分成左右兩半部分,每部分32位,密鑰與右半部分相結(jié)合,然后再與左半部分相結(jié)合,結(jié)果作為新的右半部分;結(jié)合前的右半部分作為新的左半部分。這一系列步驟組成一輪。這種輪換要重復(fù)16次。最后一輪之后,再進行初始置換的逆置換,就得到了64位的密文。

        DES的加密過程可分為加密處理,加密變換和子密鑰生成幾個部分組成。

        1.加密處理過程

        (1)初始變換。加密處理首先要對64位的明文按表1所示的初始換位表IP進行變換。表中的數(shù)值表示輸入位被置換后的新位置。例如輸入的第58位,在輸出的時候被置換到第1位;輸入的是第7位,在輸出時被置換到第64位。

        (2)加密處理。上述換位處理的輸出,中間要經(jīng)過16輪加密變換。初始換位的64位的輸出作為下一次的輸入,將64位分為左、右兩個32位,分別記為L0和R0,從L0、R0到L16、R16,共進行16輪加密變換。其中,經(jīng)過n輪處理后的點左右32位分別為Ln和Rn,則可做如下定義:

        Ln=Rn-1

        Rn=Ln-1

        其中,kn是向第n輪輸入的48位的子密鑰,Ln-1和Rn-1分別是第n-1輪的輸出,f是Mangler函數(shù)。

        (3)最后換位。進行16輪的加密變換之后,將L16和R16合成64位的數(shù)據(jù),再按照表2所示的

        最后換位表進行IP-1的換位,得到64位的密文,這就是DES算法加密的結(jié)果。

        2.加密變換過程

        通過重復(fù)某些位將32位的右半部分按照擴展表3擴展換位表擴展為48位,而56位的密鑰先移位然后通過選擇其中的某些位減少至48位,48位的右半部分通過異或操作和48位的密鑰結(jié)合,并分成6位的8個分組,通過8個S-盒將這48位替代成新的32位數(shù)據(jù),再將其置換一次。這些S-盒輸入6位,輸出4位。S盒如表5所示。

        一個S盒中具有4種替換表(行號用0、1、2、3表示),通過輸入的6位的開頭和末尾兩位選定行,然后按選定的替換表將輸入的6位的中間4位進行替代,例如:當(dāng)向S1輸入011011時,開頭和結(jié)尾的組合是01,所以選中編號為1的替代表,根據(jù)中間4位1101,選定第13列,查找表中第1行第13列所示的值為5,即輸出0101,這4位就是經(jīng)過替代后的值。按此進行,輸出32位,再按照表4 單純換位表P進行變換,這樣就完成了f(R,K)的變換,如圖2所示。

        3.子密鑰生成過程

        鑰通常表示為64位的自然數(shù),首先通過壓縮換位PC-1去掉每個字節(jié)的第8位,用作奇偶校驗,因此,密鑰去掉第8、16、24……64位減至56位,所以實際密鑰長度為56位,而每輪要生成48位的子密鑰。

        輸入的64位密鑰,首先通過壓縮換位得到56位的密鑰,每層分成兩部分,上部分28位為C0,下部分為D0。C0和D0依次進行循環(huán)左移操作生成了C1和D1,將C1和D1合成56位,再通過壓縮換位PC-2輸出48位的子密鑰K1,再將C1和D1進行循環(huán)左移和PC-2壓縮換位,得到子密鑰K2......以此類推,得到16個子密鑰。密鑰壓縮換位表如表6所示。在產(chǎn)生子密鑰的過程中,L1、L2、L9、L16是循環(huán)左移1位,其余都是左移2位,左移次數(shù)如表7所示。

        4.解密處理過程

        從密文到明文的解密過程可采用與加密完全相同的算法。不過解密要用加密的逆變換,就是把上面的最后換位表和初始換位表完全倒過來變換。這里不再贅述。

        下面這個例子中演示了如何使用c#中的加密包進行DES算法加密,大家可以借助這個例子一窺DES加密的用法。

        des_demo.cs代碼如下:

        using System;

        using System.Security.Cryptography;

        using System.IO;

        using System.Text;

        public class EncryptStringDES {

        public static void Main(String[] args) {

        if (args.Length < 1) {

        Console.WriteLine(\"Usage: des_demo

        encrypt>\", args[0]);

        return;

        }

        // 使用UTF8函數(shù)加密輸入?yún)?shù)

        UTF8Encoding utf8Encoding = new UTF8Encoding();

        byte[] inputByteArray = utf8Encoding.GetBytes(args

        [0].ToCharArray());

        // 方式一:調(diào)用默認的DES實現(xiàn)方法DES_CSP.

        DES des = DES.Create();

        // 方式二:直接使用DES_CSP()實現(xiàn)DES的實體

        //DES_CSP DES = new DES_CSP();

        // 初始化DES加密的密鑰和一個隨機的、8比特的初始化向量(IV)

        Byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab,

        0xcd, 0xef};

        Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab,

        0xcd, 0xef};

        des.Key = key;

        des.IV = IV;

        // 建立加密流

        SymmetricStreamEncryptor sse = des.CreateEncryptor();

        // 使用CryptoMemoryStream方法獲取加密過程的輸出

        CryptoMemoryStream cms = new CryptoMemoryStream();

        // 將SymmetricStreamEncryptor流中的加密數(shù)據(jù)輸出到

        CryptoMemoryStream中

        sse.SetSink(cms);

        // 加密完畢,將結(jié)果輸出到控制臺

        sse.Write(inputByteArray);

        sse.CloseStream();

        // 獲取加密數(shù)據(jù)

        byte[] encryptedData = cms.Data;

        // 輸出加密后結(jié)果

        Console.WriteLine(\"加密結(jié)果:\");

        for (int i = 0; i < encryptedData.Length; i++) {

        Console.Write(\"{0:X2} \",encryptedData[i]);

        }

        Console.WriteLine();

        //上面演示了如何進行加密,下面演示如何進行解密

        SymmetricStreamDecryptor ssd = des.CreateDecryptor();

        cms = new CryptoMemoryStream();

        ssd.SetSink(cms);

        ssd.Write(encryptedData);

        ssd.CloseStream();

        byte[] decryptedData = cms.Data;

        char[] decryptedCharArray = utf8Encoding.GetChars(decryptedData);

        Console.WriteLine(\"解密后數(shù)據(jù):\");

        Console.Write(decryptedCharArray);

        Console.WriteLine(); }

        }

        編譯:

        D:\\csharp>csc des_demo.cs

        Microsoft (R) C# Compiler Version 7.00.8905 [NGWS runtime

        2000.14.1812.10]

        Copyright (C) Microsoft Corp 2000. All rights reserved.

        運行實例:

        D:\\csharp>des_demo.exe 使用C#編寫DES加密程序的framework

        加密結(jié)果:

        3D 22 64 C6 57 D1 C4 C3 CF 77 CE 2F D0 E1 78 2A 4D ED 7A A8

        83 F9 0E 14 E1 BA 38

        7B 06 41 8D B5 E9 3F 00 0D C3 28 D1 F9 6D 17 4B 6E A7 41 68

        40

        解密后數(shù)據(jù):

        使用C#編寫DES加密程序的framework

        DES算法具有極高的安全性,到目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。通過窮盡搜索空間,可獲得總共256(大約7.2×1016)個可能的密鑰。如果每秒能檢測一百萬個的話,需要2000年完成檢測??梢?,這是很難實現(xiàn)的。當(dāng)然,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)超高速計算機后,可以考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。隨著信息化和數(shù)字化社會的發(fā)展,隨著計算機和Inte rnet的普及,密碼學(xué)必將在國家安全、經(jīng)濟交流、網(wǎng)絡(luò)安全及人民生活等方面發(fā)揮更大作用。

        參考文獻:

        [1]葉忠杰:計算機網(wǎng)絡(luò)安全技術(shù)(第二版).科學(xué)出版社 2003.8

        [2]王寶會王大印等:新世紀計算機信息安全教程.電子工業(yè)出版社 2006.1

        [3]Diffie W,Hellman M. New directions in cryptography. IEEE Transactions on Information Theory,1976,22(6):644-654

        [4]張基溫:信息系統(tǒng)安全原理.中國水利水電出版社,2005.1

        [5]顧巧論蔡振山賈春福:計算機網(wǎng)絡(luò)安全.科學(xué)出版社,2003.1

        [6]蔡立軍計算機網(wǎng)絡(luò)安全技術(shù).中國水利水電出版社,2002.1

        [7] http://www.enet.com.cn

        精品国内自产拍在线观看| 日韩一区二区av极品| 91国产熟女自拍视频| 国产麻豆剧传媒精品国产av| 亚洲av成熟国产一区二区| 影视av久久久噜噜噜噜噜三级 | 桃红色精品国产亚洲av| 免费观看成人欧美www色| 久久天天躁狠狠躁夜夜av| 九九久久精品无码专区| 国产在线无码一区二区三区| 国产精品黄色片在线观看| 日产乱码一区二区国产内射| 中文亚洲一区二区三区| 在线国产激情视频观看| 国产成人亚洲综合无码品善网| 亚洲日本中文字幕天天更新| 亚洲爆乳无码专区| 中文字幕精品久久天堂一区| 国产精品久久久久久久久久影院| 久久精品国产9久久综合| 人妖一区二区三区四区| 特黄熟妇丰满人妻无码| 免费av片在线观看网站| 91久久福利国产成人精品| 日批视频免费在线观看| 亚洲美女性生活一级片| 经典三级免费看片天堂| 久久99精品国产麻豆不卡| 国产一级毛片卡| 国产成人精品蜜芽视频| 亚洲国产成人久久精品美女av| 亚洲午夜精品一区二区| 长腿校花无力呻吟娇喘的视频| 无码日日模日日碰夜夜爽| 精品人妻中文字幕一区二区三区| 人妻人妇av一区二区三区四区| 欧美牲交a欧美牲交| 人人妻人人狠人人爽天天综合网 | 日本特黄a级高清免费大片| 99蜜桃在线观看免费视频|