• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于LabVIEW的MD5算法的實現(xiàn)

    2017-10-21 12:11:43黃加華
    科技風(fēng) 2017年12期
    關(guān)鍵詞:加密

    黃加華

    摘要:在計算機(jī)網(wǎng)絡(luò)高速發(fā)展的今天,人們對網(wǎng)絡(luò)安全也越來越重視,也對通信網(wǎng)安全的技術(shù)要求日趨緊迫。本文主要介紹了網(wǎng)絡(luò)信息數(shù)據(jù)加密的MD5算法,并對MD5算法的原理進(jìn)行研究分析,通過LabVIEW程序開發(fā)實現(xiàn)對數(shù)據(jù)信息執(zhí)行MD5加密和應(yīng)用。

    關(guān)鍵詞:通信網(wǎng)安全;MD5;LabVIEW;加密

    隨著互聯(lián)網(wǎng)通信的高速發(fā)展,以及互聯(lián)網(wǎng)相關(guān)服務(wù)的日益完善,在網(wǎng)絡(luò)上傳遞的信息量也幾乎是幾何數(shù)量級的增加;同時人們的網(wǎng)絡(luò)安全意識也不斷的提高,所以,為了更加有效地處理、存儲、管理、使用和保護(hù)在互聯(lián)網(wǎng)上傳遞的私有信息,大多是采用報文摘要加密的方式對信息加密,這不僅可以節(jié)省加密的時間,而且可以節(jié)省報文傳輸、處理和存儲的開銷,MD5(MessageDigestAlgorithm5)作為當(dāng)前主流的數(shù)據(jù)的加密技術(shù)被廣泛地應(yīng)用于通信中。

    LabVIEW在儀器儀表控制,工業(yè)自動化控制、模塊化儀器、虛擬儀器和DAQ數(shù)據(jù)采集上,都廣泛使用。結(jié)合在工程項目中,對于數(shù)據(jù)的安全性同樣越來越引起重視,因此,將其兩者的優(yōu)勢相結(jié)合,即可實現(xiàn)對工業(yè)控制和自動化測試相關(guān)數(shù)據(jù)的加密,提高數(shù)據(jù)的安全性。

    一、MD5簡介及其原理

    在90年代初,信息摘要算法是由Mit Laboratory for Computer Science和Rsa Data Security Inc的Ron Rivest研制出來的,其全稱是Messagedigest algorithm 5(簡稱為MD5),經(jīng)由MD2和MD3以及MD4,一代代發(fā)展而來。

    MD5是一種消息摘要算法(Message Digest Algorithm),因此,MD5算法是通過任意長度的信息(Message)作為數(shù)據(jù)輸入,經(jīng)過算法運算,產(chǎn)生出一個128bit(16byte)的報文摘要(Fingerprint or Message Digest)。由此可見,要由兩個不同的信息產(chǎn)生相同報文的概率是相當(dāng)小的,反而言之,一個給定的報文摘要想要逆向地產(chǎn)生回原始的信息的難度便可想而知。

    MD5算法可以簡述為:第一步,對于輸入進(jìn)來的信息,以512位的分組來處理,同時,又把每一個分組劃分為16個32位的子分組;第二步,對信息進(jìn)行一系列的循環(huán)算法運算,然后,輸出由四個32位分組組成的結(jié)果;第三步,再將這結(jié)果級聯(lián)運算,最后生成一個128位的散列值。其整體流程如圖1所示:

    采用MD5報文摘要算法產(chǎn)生報文的全過程包含以下五個步驟:

    第一步:補(bǔ)位。

    對于輸入進(jìn)來的信息,首先對數(shù)據(jù)信息進(jìn)行補(bǔ)位,然后對信息數(shù)據(jù)的長度(單位為:byte)進(jìn)行64取余數(shù),使得取余的結(jié)果是56,即Length=N*64+56(字節(jié)),同時N是一個大于等于0的正整數(shù)。此外,不管任何情況下,補(bǔ)位的操作始終是要執(zhí)行的,即使信息數(shù)據(jù)的長度Length對64取余的結(jié)果已是56。

    補(bǔ)位的具體操作為:首先,在輸入進(jìn)來的數(shù)據(jù)信息的后面補(bǔ)充一個1;然后,對數(shù)據(jù)信息補(bǔ)0已達(dá)到滿足Length=N*64+56條件時,才停止對數(shù)據(jù)信息進(jìn)行用0補(bǔ)充,由此,可看出數(shù)據(jù)信息最少要補(bǔ)充1位,最多可達(dá)512位。即相當(dāng)于補(bǔ)充了一個0X80的字節(jié),再補(bǔ)充值為0的字節(jié)。到這一步,數(shù)據(jù)信息總共補(bǔ)充的字節(jié)數(shù)為0~63個。

    第二步:附加數(shù)據(jù)長度。

    在第一步的輸出結(jié)果后面再附加用一個64位的整數(shù)表示數(shù)據(jù)的原始長度(單位為:bit),附加的數(shù)據(jù)在第一步補(bǔ)位后的數(shù)據(jù)的后面,同時,要求該數(shù)字的8個字節(jié)是以按低位的在前、高位在后的順序進(jìn)行附加。

    附加數(shù)據(jù)長度的具體操作為:假設(shè)數(shù)據(jù)的原始長度為L。第一步,換算為兩個32位數(shù)來表示L,第二步,取L的低64位;經(jīng)過對數(shù)據(jù)的附加,新的數(shù)據(jù)的長度則剛好為512位的倍數(shù),即此時的數(shù)據(jù)長度是16個字節(jié)(32位)的整數(shù)倍數(shù)。

    經(jīng)過第一步和第二步對數(shù)據(jù)信息的處理,那么數(shù)據(jù)信息的位長則為:N*512+448+64=(N+1)*512,從算式中可看出,處理后的數(shù)據(jù)長度恰好是512的整數(shù)倍。

    注:64位整數(shù)是輸入數(shù)據(jù)的原始長度,而不是填充字節(jié)后的長度。

    第三步:初始化MD5參數(shù)。

    用一個4個32位整數(shù)變量(A、B、C、D)來計算報文摘要,該整數(shù)變量被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù)。A、B、C、D分別是32位的寄存器,每一個變量都被初始化為一個以十六進(jìn)制數(shù)表示的數(shù)值,并且數(shù)值表示是低位在前面,高位在后:A=0x01234567;B=0x89ABCDEF;C=0xFEDCBA98;D=0x76543210。每一個變量給出的數(shù)值都是高字節(jié)存于內(nèi)存的低地址,低字節(jié)存于內(nèi)存的高地址,即大端字節(jié)序,所以,在程序中變量A、B、C、D的值分別為A=0x67452301;B=0xEFCDAB89;C=0x98BADCFE;D=0x10325476。

    注:低位的字節(jié)在前面指的是Little Endian平臺上內(nèi)存內(nèi)存的供應(yīng)商中字節(jié)的排列方式。

    第四步:處理分組數(shù)據(jù)。

    每一個分組都是需要將上述的四個鏈接變量賦值到另外四個變量中,即A賦值到a,B賦值到b,C賦值到c,D賦值到d;而從第二個分組開始,鏈接變量則成為上一分組的運算結(jié)果,即a 賦值到A, b 賦值到B, c賦值到C, d 賦值到D。

    MD5和MD4的差別在于,MD5的主循環(huán)有四輪,MD4僅有三輪。具體的循環(huán)操作為:第一輪需要執(zhí)行16次的操作,每次操作選取a、b、c、d四個變量中的三個作一次非線性函數(shù)運算,然后將運算結(jié)果加上剩下的一個變量,那么,原來的一個子分組和一個常數(shù),再將所運算得到的結(jié)果向左循環(huán)移位一個不定的數(shù),然后,加上a、b、c、d四個變量中的一個,最后,用最終的結(jié)果取代a、b、c、d四個變量中的一個。

    下列是每次操作使用的四個非線性函數(shù)(每輪一個,每輪循環(huán)都很相似):

    注:若X、Y、Z的對應(yīng)位是獨立并且均勻的,則得到的結(jié)果的每一位也是獨立且均勻的。函數(shù)F是逐位運算的函數(shù),即如果X,那么Y,否則Z。函數(shù)H是逐位奇偶操作符。

    假設(shè)Mj是消息數(shù)據(jù)的第j個子分組(從0到15);常數(shù)ti是4294967296*|sin(i)|的整數(shù)部分(i=1~64)。

    注:(4294967296=232),

    則定義:

    完成上述的四輪運算后,再在原基礎(chǔ)上對a、b、c、d分別加上A、B、C、D,即a = a + A,b = b + B,c = c + C,d = d + D,然后,再用下一分組數(shù)據(jù)繼續(xù)執(zhí)行上述循環(huán)算法。

    第五步:輸出報文摘要

    經(jīng)過前面四步的處理,最后輸出的數(shù)據(jù)信息應(yīng)該是a、b、c、d的級聯(lián),一共16個字節(jié),128位,同樣按照十六進(jìn)制數(shù)依次輸出這16個字節(jié),即低位字節(jié)開始,高位字節(jié)結(jié)束。

    二、MD5的LabVIEW實現(xiàn)

    根據(jù)MD5報文摘要的加密原理,現(xiàn)已字符串“hjh”為例。該字符串在內(nèi)存中表示為:68 6A 68(從左到右為低地址到高地址),信息長度為24bit,即0x18。對數(shù)據(jù)進(jìn)行補(bǔ)位,填充到448位,即56字節(jié),則結(jié)果為:686A 6880 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000,而剩下的64位,即8字節(jié)填充前信息位長,按照小端字節(jié)填充剩下的8字節(jié),則結(jié)果為:686A 6880 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 0000 0000 0000。接著對該數(shù)據(jù)進(jìn)行是初始化A、B、C、D四個變量,將該64字節(jié)填充后的數(shù)據(jù)分成16個小組(在程序中則是對應(yīng)的16個數(shù)組),則結(jié)果為:M0:686A 6880;(該顯示為內(nèi)存中的順序,是按照小端字節(jié)序原則,對應(yīng)數(shù)組M0的值為0x80686A68);M1:00000000;……M14:18000000;M15:00000000。

    經(jīng)過分組數(shù)據(jù)處理后,a、b、c、d的值分別為0xB525EF18;0x21B77990;0xE440000A;0x5A5A5E8C,則在內(nèi)存中為:a:18EF25B5;b:9079B721;c:0A0040E4;d:8C5E5A5A。所以,字符串“hjh”經(jīng)過MD5報文摘要算法后,最終的MD5的值為:18EF25B59079B7210A0040E48C5E5A5A。

    經(jīng)過實例,則更加詳細(xì)說明了MD5算法的整體流程。在自動化控制和測試的工程上多使用的LabVIEW編程語言, MD5加密廣泛使用于工程上的各個領(lǐng)域,所以,通過LabVIEW來實現(xiàn)MD5報文摘要算法。

    總體的編程流程都是按照MD5算法的整體流程,通過五個步驟實現(xiàn)對數(shù)據(jù)的MD5加密,程序的五個步驟如圖2所示。

    經(jīng)過步驟一對信息補(bǔ)位,對信息附加數(shù)據(jù)長度的程序如圖3所示。

    在步驟一和步驟的操作后,對MD5參數(shù)進(jìn)行初始化處理,實現(xiàn)了初始化后的數(shù)據(jù),執(zhí)行四輪的四個非線性函數(shù),共執(zhí)行64步。程序如圖4所示。

    在對MD5進(jìn)行初始化后,再通過對分組數(shù)據(jù)進(jìn)行處理后,對輸出的數(shù)據(jù)進(jìn)行級聯(lián)后,輸出MD5值。程序如圖5所示。

    通過MD5的算法流程的原理,采用LabVIEW圖形化的G語言實現(xiàn)MD5加密。

    三、MD5應(yīng)用

    經(jīng)過對MD5原理的闡述和實踐,MD5算法就是對任意長度的數(shù)據(jù)消息執(zhí)行運算,從而計算得到一個128位長度的“報文摘要”。在我們實際應(yīng)用中,主要是利用了他這一原理來實現(xiàn)。因為兩個不同的數(shù)據(jù)或文件要產(chǎn)生相同的報文摘要,或者通過給定的報文摘要來恢復(fù)原始的數(shù)據(jù)或文件是不可實現(xiàn)的。所以,MD5算法在當(dāng)前通信信息傳輸?shù)阮I(lǐng)域廣泛應(yīng)用。

    (一)信息摘要

    對數(shù)據(jù)信息產(chǎn)生信息摘要應(yīng)該是MD5算法的典型應(yīng)用,通過信息摘要以防止數(shù)據(jù)信息被篡改。MD5算法不僅可以將一個文字信息加密,而且可以將整個文件當(dāng)作一個大文本信息,通過MD5這不可逆的字符串變換算法,產(chǎn)生一個唯一的MD5信息摘要。

    (二)數(shù)字簽名

    就像世界上找不到兩片相同的樹葉一樣,每個人都有自己獨一無二的指紋。同樣的道理,MD5算法可以為任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個同樣獨一無二的MD5值,如果你將該文件傳遞給別人,當(dāng)別人通過某種手段修改了文件中的任何內(nèi)容,只要你重新對該文件執(zhí)行MD5算法時,那么你就會發(fā)現(xiàn)這兩個MD5值是不相同,所以,就可以判定該文件不是原始文件,已被篡改。

    (三)文件校驗

    在互聯(lián)網(wǎng)時代,應(yīng)用軟件作為我們使用最廣泛的,通常我們在某些軟件網(wǎng)站上,就會看到軟件信息中有MD5值,它的主要作用就是當(dāng)我們下載該軟件后,對下載回來的軟件做一次MD5校驗,如果運算出來的MD5和網(wǎng)站上的MD5值一致,那么就可以確定我們下載的軟件就是網(wǎng)站上的軟件;若MD5值不一致,則說明下載的軟件并非我們想要的。軟件下載站、論壇數(shù)據(jù)庫、系統(tǒng)文件安全等方面都采用MD5算法來進(jìn)行文件校驗。

    (四)登陸認(rèn)證

    MD5算法還廣泛地用在軟件的登陸認(rèn)證上。用戶在創(chuàng)建密碼時,軟件通過MD5算法將用戶的登陸密碼運算成MD5值,并存儲與數(shù)據(jù)庫或文件系統(tǒng)中。當(dāng)用戶再次登錄軟件時,軟件會把用戶當(dāng)前輸入的密碼再次進(jìn)行MD5運算,得到的MD5值再去和保存在數(shù)據(jù)庫或文件系統(tǒng)中的MD5值進(jìn)行比較,從而確定用戶輸入的密碼是否正確。

    四、總結(jié)

    如今,互聯(lián)網(wǎng)作為龐大的信息共享系統(tǒng)的載體,網(wǎng)絡(luò)安全作為互聯(lián)網(wǎng)中一個綜合性的課題,不僅僅在立法、管理、技術(shù)等方面上,還在信息和數(shù)據(jù)的安全等問題上。MD5作為互聯(lián)網(wǎng)安全的一小部分,但是,MD5在當(dāng)代的意義也是不可小覷的。通過采用儀器自動控制領(lǐng)域成熟的編程平臺LabVIEW,使得MD5算法安全應(yīng)用于此領(lǐng)域,也在提高趨向工業(yè)自動化和工業(yè)4.0安全的發(fā)展和重視。

    參考文獻(xiàn):

    [1]王育民,劉建偉.通信網(wǎng)的安全—理論與技術(shù)[M].西安電子科技大學(xué)出版社,2013.

    [2]段鋼.加密與解密[M].電子工業(yè)出版社,2008.

    [3]戴棟,楊穎.基于虛擬儀器的網(wǎng)絡(luò)測控技術(shù)研究[J].科技風(fēng),2011(22):21.

    [4]Rivest R.The MD5 messagedigest lgorithm[EB/OL].1995.

    猜你喜歡
    加密
    一種新型離散憶阻混沌系統(tǒng)及其圖像加密應(yīng)用
    一種基于熵的混沌加密小波變換水印算法
    加密與解密
    一種基于LWE的同態(tài)加密方案
    一種新型的數(shù)據(jù)加密方法
    認(rèn)證加密的研究進(jìn)展
    關(guān)于hls和mpeg-dash中的加密方案的分析
    應(yīng)用于QR碼信息加密的RC4改進(jìn)算法
    基于ECC加密的電子商務(wù)系統(tǒng)
    基于格的公鑰加密與證書基加密
    怀化市| 准格尔旗| 哈尔滨市| 东兰县| 新巴尔虎左旗| 延庆县| 红河县| 乌鲁木齐市| 保康县| 紫阳县| 西乌珠穆沁旗| 疏附县| 鄂托克旗| 舒兰市| 广德县| 汉寿县| 元朗区| 西乌| 灵台县| 广州市| 宣恩县| 建阳市| 博野县| 南木林县| 罗甸县| 镇平县| 肥东县| 盐城市| 育儿| 叙永县| 东安县| 石屏县| 阿坝| 大田县| 温宿县| 铜鼓县| 陵川县| 盐边县| 乌鲁木齐市| 邯郸县| 东山县|