|
MD5Algoritmi ülevaade MD5Funktsioon on informatsioonikild(sõnum)Genereeri informatsiooni kokkuvõtteid(sõnumite kokkuvõte), kokkuvõte on ainulaadne infole,Seda saab kasutada digitaalse allkirjana. Kasutatakse dokumendi kehtivuse kontrollimiseks(Kas andmed on kadunud või rikutud),Kasutaja parooli krüpteerimisel arvutatakse räsi väärtus räsi funktsioonis. Sisesta mistahes pikkusega bytestring, et selle genereerida128Täisarv. Tänu algoritmi pöördumatutele omadustele on sellel hea turvalisus krüpteerimisrakendustes. jaMD5Algoritmide kasutamine ei nõua autoriõiguste tasude maksmist. Ei ainulaadsus ega pöördumatus ei ole absoluutsed, teoreetiliselt analüüsitakse seda kui palju-ühele seost, kuid tõenäosus, et kaks erinevat infokillu annavad sama kokkuvõtte, on väike. Pöördumatu tähendab, et arvutus- ja arvutusaeg, mis on vajalik sisendi tuletamiseks väljundist, on liiga suur ning sõnaraamatute otsimise meetod nõuab liiga palju salvestusruumi. VeebSüsteemDisainiideed See süsteem põhineb Java veebil, ja abigaStrut2et seda saavutada. Põhiline disainiidee on läbidaVeeblehekülg, et arvutada fail süsteemi välismälus kaks kordaMD5ja võrdle, kui see on sama, faili pole muudetud, kui see on erinev, tähendab see, et failiga on manipuleeritud. VeebVersioonifaili manipuleerimiskindel süsteem – üksikasjalikud disainiideed: läbitudJSPHangi fail, mis tuleb arvutada süsteemi välismälus.JSPPärast esitamist sooritaStrut2ofLahingHüppa väärtustegaJavaloogikakiht. loogilises kihisLahingKeskmine kutseDaomeetodid,DaoArvutus on kapseldatudMD5väärtus.DaoMeetodJSPDokumendid, mis tulevad, ja kalkulaatoridMD5Pärast arvutuse lõpetamist tagasta väärtuse algne teeLahingSee on esimene kord, kui fail on arvutatudMD5väärtus, salvesta see sisseSessioon, et seda saaks võrrelda teisegaMD5Väärtused. Pärast esimest edukat hukkamist liigu edasiEdulehekülg. Nüüd alusta faili teist kordaMD5Arvutus, samuti ülaltoodud meetodiga. Pärast arvutustMD5Pärast väärtust arvutatakse teine kordMD5Väärtus on sama mis esimene arvutatud ja salvestatakseSessioonKui väärtused on samad, ei muutu. Kui see on erinev, tähendab see, et sellega on manipuleeritud. Süsteemi rakendamine 1. samm,Index.jspLähtekood <!-- Index.jspLisa failid süsteemi salvestusest siia--> <center> <form action="fileCrypt" meetod="get"> <table> <tr> <td>Faili nimi:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="start" /> </td> </tr> </table> </form> </center> 2. samm,TugipostidLähtekood konfiguratsioonifailis <!-- tugipostid2Konfiguratsioonifailid--> <struts> <constant value="true" name="struts.devMode" /> <konstantne väärtus="zh_CN" nimi="struts.locale" /> <konstantne väärtus="UTF-8" nimi="struts.i18n.encoding" /> <paketi nimi="vaikimisi" extends="tugipostid-vaikimisi"> <action name="mdeAction" class="com.crypt.action.mdeAction" method="codeCrype"> <tulemus name="edu">/index.jsp</result> </action> <action name="fileCrypt" klass="com.crypt.action.FilesCryptAction"> <tulemuse nimi="õnnestumine">/success.jsp</result> </action> <action name="fileCrypt2" class="com.crypt.action.FilesCryptAction" method="SetCrypt2"> <tulemuse nimi="õnnestumine">/FilnallySuccess.jsp</result> <result name="fail">/fail.jsp</result> </action> </struts> Kolmas samm on hüpata FilesCryptActioni peale pärast tugiposte2 pakett com.crypt.action; importida java.io.IOException; import javax.servlet.http.HttpServletRequest; importida javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.crypt.dao.Md5_dao; importida com.opensymphony.xwork2.ActionSupport; importida com.crypt.entity.Md5FilesEntity; public class FilesCryptAction laiendab ActionSupport { private Md5FilesEntity Md5FilesEntity = uus Md5FilesEntity(); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); public Md5FilesEntity getMd5FilesEntity() { tagasta Md5FilesEntity; } public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) { Md5FilesEntity = md5FilesEntity; } public String execute() viskab IOException { String fileCode = null; proovi { fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename()); session.setAttribute("fileCode", fileCode); //Esimest korda arvutati seeMD5Väärtus salvestatakse ajutiseltSessioonKeskmine } püüa (Erand e) { TODO Automaatselt genereeritud püügiblokk e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode1(fileCode); tagasta "edu"; } public string SetCrypt2() { String fileCode2 = null; proovi { fileCode2 = Md5_dao .getFileCode("e:" + Md5FilesEntity.getFilename()); } püüa (Erand e) { TODO Automaatselt genereeritud püügiblokk e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode2(fileCode2); System.out.println("session1"+session.getAttribute("fileCode")); if (fileCode2 .equals(session.getAttribute("fileCode"))) { tagasta "edu"; } muidu { tagasta "ebaõnnestub"; } } } Neljandas etapis hakkab tegevus hüppama väärtustega Md5_dao pakett com.crypt.dao; import com.crypt.md5.Md5Crypt_1; import com.crypt.md5.Md5Crypt_2; Avalik klass Md5_dao { public static String getFileCode(String fileName) viskab Exception { System.out.println(fileName); String hashCode = Md5Crypt_1.getHash(fileName, "MD5"); System.out.println (räsikood); return hashCode; } } Viies samm on luua süsteemis API, mis arvutab faili MD5 väärtuse, kutsudes selle otse DAO-sse ja nüüd töödeldakse seda otse Md5Crypt_1 meetodis pakett com.crypt.md5; import java.io.*; import java.security.*; Avalik klass Md5Crypt_1 { avalik staatiline märk[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static void main(String[] args) viskab Erandi { String fileName = "e:/111.txt"; String hashType = "MD5"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } avalik staatiline string getHash(String fileName, String hashType) viskab Erandi { InputStream fis; fis = uus FileInputStream(fileName); byte[] puhver = uus bait[1024]; MessageDigest md5 = MessageDigest.getInstance (hashType); int numRead = 0; while ((numRead = fis.read(buffer)) > 0) { md5.update(puhver, 0, numRead); } fis.close(); return to HexString(md5.digest()); } avalik staatiline string toHexString(bait[] b) { StringBuilder sb = uus StringBuilder(b.pikkus * 2); //Koosta stringigeneraator ja initsialiseeri see määratud stringi sisule for (int i = 0; I < b.pikkus; i++) { sb.append(hexChar[(b& 0xf0) >>> 4]); lisameetodid lisavad need märgid alati generaatori lõppu sb.append(hexChar[b& 0x0f]); } return sb.toString(); } } 6. samm: Pärast faili MD5 väärtuse edukat arvutamist salvestatakse esimene MD5 sessiooni tegevuses ning struts2 konfiguratsioonifaili konfiguratsiooni kaudu hüpata seccess.jsp-sse, kuvada esmakordselt arvutatud MD5 väärtus ja käivitada teine arvutus: Lähtekood Success.jsp: <body> Esimest korda arvutati seeMD5Väärtus on: <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:property value="#Md5FilesEntity.fileAfterHashCode1" /> </s:iterator> <center> <form action="fileCrypt2" method="get"> <table> <tr> <td>Faili nimi:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="start" /> </td> </tr> </table> </form> <form> <textarea style="text-align: vasak; " read="10" cols="41" readonly="readonly"> <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:property value="#Md5FilesEntity.Md5FileCode" /> </s:iterator> </textarea> </form> </center> </body> 7. samm: Alusta teist esitust ja arvuta seeMD5Väärtus arvutatakse teisel korral pärast uuesti arvutamist eeltoodud protsessi järgiMD5Väärtust võrreldakse esimese korra väärtusega, kui see on kaks kordaMD5 kui see on sama, tähendab see, et manipuleerimist ei toimu; Kui kaks kordaMD5Kui väärtus on erinev, on dokumenti muudetud. Nii on kogu süsteem valmis. Dokumentide võltsimiskindla süsteemi testimine Pane süsteem riiulileTomact 6.0tule üles ja mõistaVeebJookse. Allpool on süsteemi testskeem: 1. samm: Lisa failid, mida tuleb arvutada. Ja suruma maha"Algus" nupp, et hakata arvutama.
Teine samm arvutatakseMD5, insuccess.jspnäitab esimest arvutatudMD5väärtus ja kuvamine. Samuti tehakse teine arvutus, et selgitada, kas seda on manipuleeritud.
Kolmas samm on teha teine arvutus ilma dokumendiga manipuleerimataMD5väärtus. Kui manipuleerimist ei toimu, hüppatakse leht ilma hüpeteta otse ja kuvatakse "fail ei ole manipuleeritud". Kui dokumentiga on manipuleeritud, näitab see, et dokumenti on rikutud.
4. samm: Tee failis muudatusi ja korda ülaltoodud testi Esimene arvutus:
Pärast arvutuse õnnestumist:
Viies samm on dokumendiga teadlikult manipuleerida ja see arvutada. Põhimõtteliselt on dokument manipuleeritud ja arvutatud kaks kordaMD5Ei, võrdlemisel peaks sulle teatama, et failiga on manipuleeritud.
Sel hetkel on kogu süsteemi testimine lõpetatud.
|