一種MD5雙重校驗?zāi)P脱芯考皯?yīng)用_第1頁
一種MD5雙重校驗?zāi)P脱芯考皯?yīng)用_第2頁
一種MD5雙重校驗?zāi)P脱芯考皯?yīng)用_第3頁
一種MD5雙重校驗?zāi)P脱芯考皯?yīng)用_第4頁
一種MD5雙重校驗?zāi)P脱芯考皯?yīng)用_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    一種md5雙重校驗?zāi)P脱芯考皯?yīng)用    張明禮 袁佳峰摘 要:本文提出了基于md5算法的雙重校驗?zāi)P?,實現(xiàn)了跨平臺的版本一致性校驗,可完成任意形式文件集合的一致性比對。介紹了該模型在投產(chǎn)版本交付、測試過程版本管理和測試案例集內(nèi)容比對等領(lǐng)域的實際應(yīng)用情況。關(guān)鍵詞:版本文件;md5;一致性;散列:2095-2163(2019)04-0234-03 :tp311 文獻標志碼:a0 引 言隨著金融科技的快速發(fā)展,金融產(chǎn)品推陳出新日益加快,軟件版本發(fā)布頻率越來越高。如何加強開發(fā)、測試、運維團隊之間的協(xié)作,有效管控版本文件在整個軟件生命周期中的交付風(fēng)險1,如

2、何防范客觀上的差錯風(fēng)險和主觀上的篡改風(fēng)險,是軟件行業(yè)特別是金融行業(yè)需關(guān)注的問題。md52是一種散列(hash)技術(shù),廣泛用于加密、解密、數(shù)據(jù)簽名和數(shù)據(jù)完整性校驗等方面。本文主要關(guān)注數(shù)據(jù)完整性校驗問題,對于任何一個文件,無論代碼文件、可執(zhí)行程序、或者其它類型的文件,不管文件字節(jié)數(shù)的多少,都可以計算出一個md5值,可以通過對比同一文件的 md5 值來判斷文件是否被篡改。目前通行的做法是使用md5算法解決單一文件的比對,本文基于標準md5算法,提出了一種md5雙重校驗?zāi)P?,可以處理任意形式文件集合的一致性比對,在不改變交付物目錄結(jié)構(gòu)的情況下,有效防范投產(chǎn)版本交付、測試版本過程管控3中的操作風(fēng)險。1

3、md5校驗?zāi)P徒榻B1.1 md5雙重校驗?zāi)P驮砟P偷募夹g(shù)原理為,使用標準md5散列算法獲得每個文件的md值(第一次),遍歷并記錄所有文件的文件路徑、文件名和md5值,形成中間過程文件(文件不落地的情況下為字節(jié)流),針對該文件(字節(jié)流)生成md5值(第二次),如圖1所示。1.2 模型設(shè)計目標(1)對于任意形式(單一文件、復(fù)雜層級文件夾)的版本文件,最終生成唯一的md5值。(2)兼容主流操作系統(tǒng),在不改變?nèi)魏蜗到y(tǒng)設(shè)置情況下,實現(xiàn)跨平臺的一致性校驗(unix和windows),即對于同一文件集合,在windows和unix平臺下生成的最終md5值應(yīng)相同。1.3 算法生成步驟(1)遞歸方式遍歷所有層

4、級文件,以版本文件及其路徑構(gòu)建版本信息二叉排序樹,并生成每個文件的md5值。(2)遍歷二叉樹,生成包含文件名稱、文件路徑、md5值信息的中間過程文件(字節(jié)流)。(3)對中間過程文件(字節(jié)流)再次生成md5值,該md5值可記錄至平臺或通過郵件告知相關(guān)方,并作為一致性比對依據(jù)。2 實例驗證以個人網(wǎng)銀系統(tǒng)日常變更的版本文件作為實例,說明該校驗?zāi)P偷膽?yīng)用情況。(1)在個人網(wǎng)銀系統(tǒng)20190327版本包中,包含一個20190327文件夾,該文件夾內(nèi)有menusnew.xml等4個文件。(2)中間過程文件,每一行對應(yīng)一個文件葉子節(jié)點的md5值,由文件路徑,文件名組成,如圖2所示。該文件可以根據(jù)需要寫到本地

5、備查,也可以不落地直接生成md5。針對此中間過程文件,2次生成md5值32f1be00b64bac55d73ef02db0e494c0,該md5值可以通過平臺或郵件,通知不同的操作人員,作為版本文件一致性的比對依據(jù)。(3)windows客戶端工具。客戶端工具支持windows下的文件比對,文件路徑指版本文件在本地的存放路徑。平臺(遠程)md5值是基于中間文件生成的最終md5值。本地md5值是根據(jù)本地文件生成的md5值。在d:md5目錄下,存放了網(wǎng)銀20190327版本包,windows客戶端工具如圖3所示。(4)unix平臺客戶端比對工具。 unix類平臺雖然具有多樣性,但一般都預(yù)裝有perl

6、解釋器,并且無需安裝運行環(huán)境,普通用戶可以直接執(zhí)行。經(jīng)過調(diào)研比較,本研究選擇perl語言開發(fā)比對工具,兼容aix、 hp-ux、 linux等unix類工作平臺,要求perl環(huán)境為5.6及以上版本。工具支持文件和目錄的校驗,支持相對路徑和絕對路徑,通過如下格式調(diào)用perl腳本進行md5一致性校驗:perl md5check.pl d directory(filename) -m md5value。perl環(huán)境版本號檢查方法如下:host1013_cbs/cbs/md5 >perl -vthis is perl,v5.10.1 (*) built for aix-thread-multi在

7、/cbs/md5/nb目錄下,存放了網(wǎng)銀20190327版本包,下面給出了3種情況的比對示例:輸入正確的md5值,提示md5比對通過:host1013_cbs/cbs/md5 >perl md5check.pl-d nb -m 32f1be00b64bac55d73ef02db0e494c0md5 verified ok輸入錯誤的md5值,提示md5比對不通過:host1013_cbs/cbs/md5 >perl md5check.pl-d nb -m 32f1be00b64bac55d73ef02db0e494c1md5 verified failure, please rech

8、eck the md5 value you input!輸入正確的md5值,但修改了版本文件menusnew.xml(例如在文件最后增加一個字符),提示md5比對不通過:host1013_cbs/cbs/md5 >perl md5check.pl-d nb -m 32f1be00b64bac55d73ef02db0e494c0md5 verified failure, please recheck the md5 value you input?。?)性能表現(xiàn)。對于100 m以下的版本文件,在1 s內(nèi)即可獲得文件集的md5結(jié)果;800 m以上版本文件,其處理時間在10 s內(nèi),屬于可接受的

9、等待時間。但測試發(fā)現(xiàn),較大文件的cpu消耗略高,建議不要在生產(chǎn)環(huán)境的業(yè)務(wù)高峰期使用該工具。為了得到md5客戶端工具的使用效率和性能開銷情況,按照版本文件大小區(qū)分,分別選取大中小3種類型的版本文件,進行執(zhí)行時間、系統(tǒng)資源消耗的監(jiān)控,測試結(jié)果見表1。md5客戶端工具的運行時間和版本大小成正比,cpu資源的消耗主要和版本文件的大小、cpu主頻與數(shù)量、存儲設(shè)備性能等有關(guān)。3 應(yīng)用場景該模型在投產(chǎn)版本交付、測試過程版本管理和測試案例集內(nèi)容比對等領(lǐng)域得到了實際應(yīng)用,具體應(yīng)用情況如下:3.1 投產(chǎn)版本交付管理領(lǐng)域投產(chǎn)版本是指最終發(fā)布在生產(chǎn)環(huán)境中的一組特定軟件包及其各類附屬文件的集合,一般包括目標代碼、腳本、

10、配置文件和安裝說明文檔等。投產(chǎn)版本交付的主要環(huán)節(jié)為:版本文件在項目開發(fā)方制作完成后,經(jīng)由測試方測試通過,最終交付給運維方在生產(chǎn)環(huán)境變更實施。對于任何一個版本文件集,開發(fā)方在制作完成后提交至版本平臺,并檢驗本地和平臺md5值是否保持一致;測試方在md5一致性校驗通過后開展測試驗證工作;實施方在md5一致性校驗通過后方可進行生產(chǎn)環(huán)境發(fā)布??梢钥吹剑P偷膽?yīng)用貫穿了投產(chǎn)版本從開發(fā)、測試到投產(chǎn)的全過程。通過提供跨平臺md5一致性校驗,滿足了應(yīng)用系統(tǒng)平臺多樣性需求,實現(xiàn)了浦發(fā)銀行應(yīng)用系統(tǒng)投產(chǎn)版本交付的全覆蓋,月均交付投產(chǎn)版本超過300個。該模型的成功應(yīng)用,替代了傳統(tǒng)的基于文件名、字節(jié)數(shù)和時間戳等內(nèi)容為主

11、的手工比對,實現(xiàn)了針對版本內(nèi)容的一致性校驗。不僅有效防范了客觀上的差錯風(fēng)險(例如網(wǎng)絡(luò)傳輸過程中的部分文件意外丟失)和主觀上的篡改風(fēng)險(例如上傳未經(jīng)授權(quán)的惡意代碼),同時提高了版本比對效率,為應(yīng)用系統(tǒng)的安全投產(chǎn)與穩(wěn)定運行提供了重要保障。3.2 測試版本過程管控領(lǐng)域生產(chǎn)環(huán)境的變更往往有嚴格的變更管理流程來管控,測試環(huán)境一般由項目組自行管理,應(yīng)用版本更新相對來說具有靈活性和隨意性。假定在某一輪測試過程中發(fā)生了版本更新,就會引發(fā)測試結(jié)果與測試版本之間無法有效對應(yīng),進而影響測試結(jié)果的可信度。使用了基于此校驗?zāi)P偷陌姹咀兏鼨z測工具,可隨時監(jiān)控被測環(huán)境的應(yīng)用版本更新情況。當(dāng)測試版本變更時,項目開發(fā)人員和測試

12、人員都會收到版本變化的郵件通知,及時掌握每次版本更新的情況,掌控協(xié)調(diào)版本更新節(jié)奏,減少了對功能、性能差異的探究以及頻繁更新導(dǎo)致的重復(fù)測試。測試版本從首次提交到測試結(jié)果發(fā)布,整個測試過程納入管控,有力推進了測試版本交付和變更過程規(guī)范化。3.3 測試案例自動化生成項目基于業(yè)務(wù)流程圖生成的測試案例集中,測試案例數(shù)量往往達到數(shù)百個。如果業(yè)務(wù)流程圖因業(yè)務(wù)變化需要更新,更新前后生成的有差別的案例可能只有幾個,通過人工識別這些差別,效率非常低。通過基于該模型的中間過程文件比對,可以快速的定位哪些案例發(fā)生了變化,在系統(tǒng)層面予以標記,節(jié)省了大量的人工成本。4 結(jié)束語本文提出了一種改進的md5校驗?zāi)P?,該模型成功?yīng)用于投產(chǎn)版本文件交付、測試過程版本管控、測試案例集內(nèi)容比對等領(lǐng)域。模型的提出及其應(yīng)用,提升了投產(chǎn)版本交付的效率和安全性,實現(xiàn)了測試版本的過程管控,大幅提升了測試案例集比對的效率?;谠撃P偷难芯亢蛻?yīng)用,對于軟件行業(yè)和金融行業(yè)具有一定的參考價值。參考文獻1董昕,郭勇,王杰. 基于devops能力模型的持續(xù)集成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論