|
MD5Prehľad algoritmu MD5Funkcia je k informácii(správa)Generujte informačné prehľady(zhrnutie správy), zhrnutie je jedinečné pre informácie,Môže sa použiť ako digitálny podpis. Používa sa na overenie platnosti dokumentu(Či došlo k strate alebo poškodeniu dát),Pri šifrovaní používateľského hesla sa hodnota hashu vypočíta v hashovacej funkcii. Zadajte bajtový reťazec ľubovoľnej dĺžky, aby ste ho vygenerovali128Celé číslo bitu. Vďaka niektorým nezvratným vlastnostiam algoritmu má dobrú bezpečnosť v šifrovacích aplikáciách. aMD5Používanie algoritmov nevyžaduje platenie žiadnych poplatkov za autorské práva. Ani jedinečnosť, ani nevratnosť nie sú absolútne, teoreticky ju analyzujeme ako vzťah mnoho-na-jedného, ale pravdepodobnosť, že dve rôzne informácie vedú k rovnakému zhrnutiu, je malá. Nevratné znamená, že množstvo výpočtového a výpočtového času potrebného na odvodenie vstupu z výstupu je príliš veľké a spôsob vyhľadávania slovníkov vyžaduje príliš veľa úložného priestoru. WebSystémNápady na dizajn Tento systém je založený na Java Web, a s pomocouStrut2aby som to dosiahol. Základná myšlienka dizajnu je prejsťWebna výpočet súboru v systémovej externej pamäti dvakrátMD5a porovnať, ak je to ten istý súbor, nebolo s ním manipulované, ak je iný, znamená to, že súbor bol pozmenený. WebSystém odolný voči úpravám verzií – detailné návrhy na dizajn: schválenéJSPZískajte súbor, ktorý je potrebné vypočítať v externej pamäti systému.JSPPo odovzdaní prejdiStrut2zAkciaPreskočiť na s hodnotamiJavalogická vrstva. na logickej vrstveAkciaStredné volanieDaometódy,DaoVýpočet je zapuzdrenýMD5hodnotu.DaoMetódaJSPDokumenty, ktoré prichádzajú, a kalkulačkyMD5Po dokončení výpočtu vráťte pôvodnú cestu hodnotyAkciaToto je prvýkrát, čo bol súbor vypočítanýMD5hodnota, ulož ju doZasadnutie, takže ho možno porovnať s druhýmMD5Hodnoty. Po prvom úspešnom vykonaní prejdite naÚspechstránka. Teraz začnite druhýkrát súboruMD5Výpočty, tiež vyššie uvedenou metódou. Po výpočteMD5Po tejto hodnote sa vypočíta druhý časMD5Hodnota je rovnaká ako pri prvom výpočte a ukladá sa vZasadnutieAk sú hodnoty rovnaké, nedochádza k zmene. Ak je iný, znamená to, že bol manipulovaný. Implementácia systému Krok 1,Index.jspZdrojový kód v <!-- Index.jspPridajte súbory zo systémového úložiska sem--> <center> <formová akcia="fileCrypt" metóda="get"> <table> <tr> <td>Názov súboru</td>: <td><vstupný typ="file" name="Md5FilesEntity.filename" /> </td> <td><typ vstupu=hodnota "odoslať" = "začať" /> </td> </tr> </table> </form> </center> Krok 2,vzperyZdrojový kód v konfiguračnom súbore <!-- vzpery2Konfiguračné súbory--> <struts> <constant value="true" name="struts.devMode" /> <konštantná hodnota="zh_CN" meno="struts.locale" /> <konštantná hodnota="utf-8" meno="struts.i18n.encoding" /> <názov balíka="default" extends="struts-default"> <meno akcie="mdeAction" class="com.crypt.action.mdeAction" method="codeCrype"> <názov výsledku="úspech">/index.jsp</result> </action> <názov akcie="fileCrypt" class="com.crypt.action.FilesCryptAction"> <názov výsledku="úspech">/success.jsp</result> </action> <meno akcie="fileCrypt2" class="com.crypt.action.FilesCryptAction" metóda="SetCrypt2"> <názov výsledku="úspech">/FilnallySuccess.jsp</result> <názov výsledku="fail">/fail.jsp</result> </action> </struts> Tretím krokom je preskočiť na FilesCryptAction po struts2 balík com.crypt.action; import java.io.IOException; import javax.servlet.http.HttpHttpServletRequest; import javax.servlet.http.HttpHttpSession; import org.apache.struts2.ServletActionContext; import com.crypt.dao.Md5_dao; import com.opensymphony.xwork2.ActionSupport; import com.crypt.entity.Md5FilesEntity; public class FilesCryptAction rozširuje ActionSupport { súkromný Md5FilesEntity Md5FilesEntity = nový Md5FilesEntity(); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); public Md5FilesEntity getMd5FilesEntity() { return Md5FilesEntity; } public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) { Md5FilesEntity = md5FilesEntity; } public String execute() hodí IOException { String fileCode = null; try { fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename()); session.setAttribute("fileCode", fileCode); //Prvýkrát to bolo vypočítanéMD5Hodnota sa dočasne ukladá vZasadnutieStredná } catch (Výnimka e) { TODO Automaticky generovaný záchytný blok e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode1(fileCode); návrat "úspechu"; } public String SetCrypt2() { String fileCode2 = null; try { fileCode2 = Md5_dao .getFileCode("e:" + Md5FilesEntity.getFilename()); } catch (Výnimka e) { TODO Automaticky generovaný záchytný blok e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode2(fileCode2); System.out.println("session1"+session.getAttribute("fileCode")); if (fileCode2 .equals(session.getAttribute("fileCode"))) { návrat "úspechu"; } inak { return "fail"; } } } Vo štvrtom kroku akcia začne preskakovať na Md5_dao s hodnotami balík com.crypt.dao; import com.crypt.md5.Md5Crypt_1; import com.crypt.md5.Md5Crypt_2; verejná trieda Md5_dao { public static String getFileCode(String fileName) throws Exception { System.out.println(fileName); String hashCode = Md5Crypt_1.getHash(súborName, "MD5"); System.out.println(hashCode); return hashCode; } } Piatym krokom je vytvoriť API v systéme, ktoré vypočíta hodnotu MD5 súboru, teda zavolať ho priamo v DAO a teraz sa priamo spracováva metódou Md5Crypt_1 balík com.crypt.md5; import java.io.*; import java.security.*; verejná trieda Md5Crypt_1 { public static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static void main(String[] args) hodí výnimku { Názov súboru reťazca = "e:/111.txt"; String hashType = "MD5"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } public static String getHash(Názov súboru reťazca, typ hashu reťazca) hodí Výnimka { InputStream fis; fis = nový FileInputStream(fileName); bajt[] buffer = nový bajt[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; zatiaľ čo ((numRead = fis.read(buffer)) > 0) { md5.update(buffer, 0, numRead); } fis.close(); return toHexString(md5.digest()); } public static String toHexString(byte[] b) { StringBuilder sb = nový StringBuilder(b.dĺžka * 2); //Vytvorte generátor reťazcov a inicializujte ho na zadaný obsah reťazca pre (int i = 0; Ja som < B.Dĺžka; i++) { sb.append(hexChar[(b& 0xf0) >>> 4]); pridaťMetódy vždy pridávajú tieto znaky na koniec generátora sb.append(hexChar[b& 0x0f]); } return sb.toString(); } } Krok 6: Po úspešnom výpočte hodnoty MD5 súboru sa prvý MD5 uloží do relácie v akcii a cez konfiguráciu konfiguračného súboru struts2 preskočí na seccess.jsp, zobrazí sa hodnota MD5 vypočítaná prvýkrát a vyzve sa na začatie druhého výpočtu: Zdrojový kód v Success.jsp: <body> Prvýkrát to bolo vypočítanéMD5Hodnota je: <s:hodnota iterátora="Md5FilesEntity" id="Md5FilesEntity" stav="L"> <s:property value="#Md5FilesEntity.fileAfterHashCode1" /> </s:iterátor> <center> <form action="fileCrypt2" method="get"> <table> <tr> <td>Názov súboru</td>: <td><vstupný typ="file" name="Md5FilesEntity.filename" /> </td> <td><typ vstupu=hodnota "odoslať" = "začať" /> </td> </tr> </table> </form> <form> <textarea style="text-align: left; " rows="10" cols="41" readonly="readonly"> <s:hodnota iterátora="Md5FilesEntity" id="Md5FilesEntity" stav="L"> <s:property value="#Md5FilesEntity.Md5FileCode" /> </s:iterátor> </textarea> </form> </center> </body> Krok 7: Začnite druhý príspevok a vypočítajte hoMD5Hodnota sa vypočíta druhýkrát po opätovnom výpočte podľa vyššie uvedeného procesuMD5Hodnota sa porovnáva s hodnotou z prvého pokusu, ak je to dvakrátMD5 ak je to rovnaké, znamená to, že nedochádza k manipulácii; Ak dvakrátMD5Ak je hodnota iná, dokument bol pozmenený. Tým je celý systém dokončený. Testovanie systémov odolných voči manipulácii dokumentov Daj systém na regálTomact 6.0príď hore a uvedom si toWebUtekaj. Nižšie je testovací diagram systému: Krok 1: Pridaj súbory, ktoré treba vypočítať. A zasiahni"začiatok" na začatie výpočtu.
Druhý krok sa vypočítaMD5, vsuccess.jspukazuje prvý vypočítanýMD5hodnotu a prezentáciu. Na zistenie, či bol systém pozmenený, sa tiež vykoná druhý výpočet.
Tretím krokom je vykonať druhý výpočet bez manipulácie s dokumentomMD5hodnotu. Ak nedôjde k manipulácii, stránka bez skoku sa preskočí priamo a zobrazí sa "súbor nebol zmenený". Ak bol dokument pozmenený, ukáže to, že dokument bol pozmenený.
Krok 4: Urobte zmeny v súbore a zopakujte vyššie uvedený test Prvý výpočet:
Po úspešnom výpočte:
Piatym krokom je zámerne upraviť dokument a vypočítať ho. V zásade je dokument upravený a vypočítaný dvakrátMD5Nie, pri porovnávaní by ste mali byť upozornení, že súbor bol pozmenený.
V tomto bode je testovanie celého systému ukončené.
|