|
MD5Pregled algoritma MD5Funkcija je povezana z informacijo(sporočilo)Generiranje informacijskih povzetkov(povzetek sporočila), povzetek je edinstven za informacije,Lahko se uporablja kot digitalni podpis. Uporablja se za preverjanje veljavnosti dokumenta(Ali so podatki izgubljeni ali poškodovani),Šifriranje uporabniškega gesla, zgoščena vrednost se izračuna v zgoščeni funkciji. Vnesite niz bajtov poljubne dolžine, da ga ustvarite128Celo število bita. Zaradi nekaterih nepopravljivih značilnosti algoritma ima dobro varnost v šifrirnih aplikacijah. inMD5Uporaba algoritmov ne zahteva plačila nobenih pristojbin za avtorske pravice. Niti edinstvenost niti nepovratnost nista absolutni, teoretično jo analiziramo kot razmerje več proti ena, vendar je verjetnost, da dve različni informaciji proizvedeta isti povzetek, majhna. Nepovratno pomeni, da je količina izračuna in časa, potrebnega za izpeljavo vhoda iz izhoda, prevelika, zato metoda iskanja slovarjev zahteva preveč prostora za shranjevanje. SpletSistemIdeje za oblikovanje Ta sistem temelji na Java Web, in s pomočjoStrut2da bi to dosegli. Osnovna zasnova je, da opravišSpletza dvakratni izračun datoteke v zunanjem pomnilniku sistemaMD5in primerjaj, če je enaka, datoteka ni bila spremenjena, če je drugačna, pomeni, da je bila datoteka spremenjena. SpletSistem, ki je odporen na poseg v datoteko različice, podrobne ideje za oblikovanje: sprejetJSPPridobi datoteko, ki jo je treba izračunati v zunanjem pomnilniku sistema.JSPPo oddaji opraviStrut2odDogajanjePreskoči na z vrednostmiJavalogična plast. na logični plastiDogajanjeSrednji klicDAOMetode,DAOIzračun je enkapsuliranMD5vrednost.DaoMetodaJSPDokumenti, ki pridejo, in kalkulatorjiMD5Ko je izračun zaključen, vrnimo izvorno pot vrednostiDogajanjeTo je prvič, da je bila datoteka izračunanaMD5vrednost, shrani jo vSeja, da ga je mogoče primerjati z drugimMD5Vrednote. Po prvi uspešni izvedbi preskočite naUspehPage. Zdaj začnite drugič v datotekiMD5Izračun, prav tako po zgornji metodi. Po izračunuMD5Po vrednosti se izračuna drugičMD5Vrednost je enaka kot prvič izračunana in se shrani vSejaČe so vrednosti enake, ni spremembe. Če je drugačna, pomeni, da je bila spremenjena. Implementacija sistema Korak 1,Index.jspIzvorna koda v <!-- Index.jspDodajte datoteke iz sistemskega shranjevanja tukaj--> <center> <form action="fileCrypt" method="get"> <table> <tr> <td>Ime datoteke</td>: <td><vhodna vrsta="ime datoteke="Md5FilesEntity.filename" /> </td> <td><vhodni tip="pošlji" vrednost="začetek" /> </td> </tr> </table> </form> </center> Korak 2,NosilciIzvorna koda v konfiguracijski datoteki <!-- nosilci2Konfiguracijske datoteke--> <struts> <constant value="true" name="struts.devMode" /> <konstantna vrednost="zh_CN" ime="struts.locale" /> <konstantna vrednost="utf-8" ime="struts.i18n.encoding" /> <ime paketa="default" extends="struts-default"> <ime akcije="mdeAction" class="com.crypt.action.mdeAction" method="codeCrype"> <ime rezultata="uspeh">/index.jsp</result> </action> <ime akcije="fileCrypt" class="com.crypt.action.FilesCryptAction"> <ime rezultata="uspeh">/success.jsp</result> </action> <ime akcije="fileCrypt2" class="com.crypt.action.FilesCryptAction" metoda="SetCrypt2"> <ime rezultata="uspeh">/FilnallySuccess.jsp</result> <ime rezultata="fail">/fail.jsp</result> </action> </struts> Tretji korak je skok na FilesCryptAction po struts2 paket com.crypt.action; import java.io.IOException; import javax.servlet.http.HttpHttpServletRequest; import javax.servlet.http.HttpHttpSession; import org.apache.struts2.ServletActionContext; uvozni com.crypt.dao.Md5_dao; uvoz com.opensymphony.xwork2.ActionSupport; uvoz com.crypt.entity.Md5FilesEntity; javni razred FilesCryptAction razširja ActionSupport { zasebni Md5FilesEntity Md5FilesEntity = novi Md5FilesEntity(); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); public Md5FilesEntity getMd5FilesEntity() { return Md5FilesEntity; } public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) { Md5FilesEntity = md5FilesEntity; } public String execute() meče IOException { String fileCode = null; try { fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename()); session.setAttribute("fileCode", fileCode); //Prvič so ga izračunaliMD5Vrednost se začasno shrani vSejaSrednja } catch (Izjema e) { TODO samodejno generiran blok ujetja e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode1(fileCode); vrnitev "uspeh"; } public String SetCrypt2() { String fileCode2 = null; try { fileCode2 = Md5_dao .getFileCode("e:" + Md5FilesEntity.getFilename()); } catch (Izjema e) { TODO samodejno generiran blok ujetja e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode2(fileCode2); System.out.println("session1"+session.getAttribute("fileCode")); if (fileCode2 .equals(session.getAttribute("fileCode"))) { vrnitev "uspeh"; } else { vrni "fail"; } } } V četrtem koraku akcija začne skakati na Md5_dao z vrednostmi paket com.crypt.dao; uvozni com.crypt.md5.Md5Crypt_1; uvozni com.crypt.md5.Md5Crypt_2; javni razred Md5_dao { public static String getFileCode(String fileName) meče Exception { System.out.println(fileName); String hashCode = Md5Crypt_1.getHash(fileName, "MD5"); System.out.println(hashCode); vrni hashCode; } } Peti korak je, da v sistemu ustvarite API za izračun MD5 vrednosti datoteke, torej jo neposredno pokličete v DAO, in zdaj se neposredno obdela v metodi Md5Crypt_1 paket com.crypt.md5; uvoz java.io.*; uvoz java.security.*; javni razred Md5Crypt_1 { javni statični znak[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static void main(String[] args) meče Exception { String fileName = "e:/111.txt"; String hashType = "MD5"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } public static String getHash(Ime datotekeString, String hashType) meče Izjema { InputStream fis; fis = nov FileInputStream(fileName); bajt[] medpomnilnik = nov bajt[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; medtem ko ((numRead = fis.read(buffer)) > 0) { md5.update(buffer, 0, numRead); } fis.close(); return to HexString(md5.digest()); } javni statični String toHexString(byte[] b) { StringBuilder sb = nov StringBuilder(b.length * 2); //Zgradite generator nizov in ga inicializirajte na določeno vsebino niza za (int i = 0; Jaz < B.dolžine; i++) { sb.append(hexChar[(b& 0xf0) >>> 4]); dodajMetode vedno dodajo te znake na konec generatorja sb.append(hexChar[b& 0x0f]); } return sb.toString(); } } Korak 6: Po uspešnem izračunu vrednosti MD5 datoteke se prvi MD5 shrani v sejo v akciji, in skozi konfiguracijo konfiguracijske datoteke struts2 skočite na seccess.jsp, prikažete vrednost MD5, izračunano prvič, in pozovete za začetek drugega izračuna: Izvorna koda v Success.jsp: <body> Prvič so ga izračunaliMD5Vrednost je: <s:vrednost iteratorja="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:property value="#Md5FilesEntity.fileAfterHashCode1" /> </s:iterator> <center> <form action="fileCrypt2" method="get"> <table> <tr> <td>Ime datoteke</td>: <td><vhodna vrsta="ime datoteke="Md5FilesEntity.filename" /> </td> <td><vhodni tip="pošlji" vrednost="začetek" /> </td> </tr> </table> </form> <form> <textarea style="text-align: left; " rows="10" cols="41" readonly="readonly"> <s:vrednost iteratorja="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:property value="#Md5FilesEntity.Md5FileCode" /> </s:iterator> </textarea> </form> </center> </body> Korak 7: Začni drugo oddajo in izračunajMD5Vrednost se izračuna drugič po ponovnem izračunu po zgornjem postopkuMD5Vrednost se primerja z vrednostjo prvič, če je dvakrat večjaMD5 če je enaka, pomeni, da ni poseganja v to; Če dvakratMD5Če je vrednost drugačna, je bil dokument spremenjen. Tako je celoten sistem dokončan. Testiranje sistemov, odpornih na posege v dokumente Postavi sistem na policoTomact 6.0Pridi gor in se zavedajSpletBeži. Spodaj je testni diagram sistema: Korak 1: Dodaj datoteke, ki jih je treba izračunati. In ukrepajte"začni" gumb za začetek računanja.
Drugi korak se izračunaMD5, vsuccess.jsppokaže prvo izračunanoMD5vrednost in razstavo. Za ugotavljanje, ali je bila naprava spremenjena, se izvede tudi drugi izračun.
Tretji korak je opraviti drugi izračun brez poseganja v dokumentMD5vrednost. Če ni nobenega posega, bo stran brez preskoka preskakovana neposredno in prikaže se "datoteka ni bila spremenjena". Če je bil dokument spremenjen, bo to pokazalo, da je bil dokument spremenjen.
Korak 4: Spremenite datoteko in ponovite zgornji test Prvi izračun:
Ko je izračun uspešen:
Peti korak je namerno spreminjanje dokumenta in izračun. Načeloma je dokument dvakrat spremenjen in izračunanMD5Ne, pri primerjavi bi morali biti opozorjeni, da je datoteka spremenjena.
Na tej točki je testiranje celotnega sistema zaključeno.
|