|
MD5Algoritmin yleiskatsaus MD5Funktio on tiettyyn tietopalaan(viesti)Luo tiedon tiivisteitä(viesti-tiivistelmä), yhteenveto on ainutlaatuinen tiedolle,Sitä voidaan käyttää digitaalisena allekirjoituksena. Käytetään asiakirjan pätevyyden varmistamiseen(Onko dataa kadonnut tai vioittunut),Käyttäjän salasanan salauksessa hash-arvo lasketaan hajautusfunktiossa. Syötä minkä tahansa pituinen bytestring luodaksesi sellaisen128Bitin kokonaisluku. Algoritmin joidenkin peruuttamattomien ominaisuuksien vuoksi sillä on hyvä turvallisuus salaussovelluksissa. jaMD5Algoritmien käyttö ei vaadi tekijänoikeusmaksujen maksamista. Kumpikaan ainutlaatuisuus tai peruuttamattomuus eivät ole absoluuttisia, ja teoriassa analysoidaan niitä monen yhteen -suhteena, mutta kahden eri tiedon todennäköisyys tuottaa saman yhteenvedon on pieni. Peruuttamaton tarkoittaa, että syötteen päättelemiseen vaadittava laskenta- ja laskentaaika on liian suuri, ja sanakirjojen hakumenetelmä vaatii liikaa tallennustilaa. VerkkoJärjestelmäSuunnitteluideat Tämä järjestelmä perustuu Java Webiin, ja avustuksellaTuki 2tämän saavuttamiseksi. Perusidea on päästä läpiWEBsivu laskeaksesi tiedoston järjestelmän ulkoisessa muistissa kahdestiMD5ja vertaa, jos tiedosto on sama, tiedostoa ei ole manipuloitu, jos se on erilainen, se tarkoittaa, että tiedostoa on manipuloitu. VerkkoVersion tiedoston manipulointisuojajärjestelmä yksityiskohtaiset suunnitteluideat: hyväksyttyJSPHae tiedosto, joka täytyy laskea järjestelmän ulkoisessa muistissa.JSPLähettämisen jälkeen läpäiseTuki 2ofToimintaHyppää arvojen kanssaJavalogiikkakerros. loogisella kerroksellaToimintaKeskikokoinen kutsuDaomenetelmät,DaoLaskenta on kapseloituMD5arvo.DaoMenetelmäJSPDokumentit, jotka tulevat paikalle, ja laskimetMD5Kun laskenta on suoritettu, palauta arvon alkuperäinen polkuToimintaTämä on ensimmäinen kerta, kun tiedosto on laskettuMD5arvo, tallenna se sisäänIstunto, jotta sitä voidaan verrata toiseenMD5Arvot. Ensimmäisen onnistuneen teloituksen jälkeen siirry kohtaanMenestyssivu. Aloita nyt tiedoston toinen käyttökertaMD5Laskenta, myös yllä mainitulla menetelmällä. Laskennan jälkeenMD5Arvon jälkeen lasketaan toinen kertaMD5Arvo on sama kuin ensimmäisessä laskettuna ja tallennetaanIstuntoJos arvot ovat samat, muutosta ei tapahdu. Jos se on erilainen, se tarkoittaa, että siihen on manipuloitu. Järjestelmän toteutus Vaihe 1,Index.jspLähdekoodi sisällä <!-- Index.jspLisää tiedostot järjestelmän tallennustilasta täällä--> <center> <form action="fileCrypt" method="get"> <table> <tr> <td>Tiedostonimi:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="start" /> </td> </tr> </table> </form> </center> Vaihe 2,TukivarretKonfiguraatiotiedoston lähdekoodi <!-- tukivarret2Konfiguraatiotiedostot--> <struts> <constant value="true" name="struts.devMode" /> <vakio value="zh_CN" name="struts.locale" /> <vakio value="utf-8" name="struts.i18n.encoding" /> <package name="default" extends="struts-default"> <action name="mdeAction" class="com.crypt.action.mdeAction" method="codeCrype"> <result name="onnistunut">/index.jsp</result> </action> <action name="fileCrypt" class="com.crypt.action.FilesCryptAction"> <result name="onnistunut">/success.jsp</result> </action> <action name="fileCrypt2" class="com.crypt.action.FilesCryptAction" method="SetCrypt2"> <tuloksen nimi="onnistuminen">/FilnallySuccess.jsp</result> <result name="fail">/fail.jsp</result> </action> </struts> Kolmas vaihe on hypätä FilesCryptActioniin tukivarsien 2 jälkeen paketti com.crypt.action; tuo java.io.IOException; tuo javax.servlet.http.HttpServletRequest; tuo javax.servlet.http.HttpSession; tuo org.apache.struts2.ServletActionContext; tuonti com.crypt.dao.Md5_dao; tuo com.opensymphony.xwork2.ActionSupport; tuo com.crypt.entity.Md5FilesEntity; julkinen luokka FilesCryptAction laajentaa ActionSupportia { yksityinen Md5FilesEntity Md5FilesEntity = uusi Md5FilesEntity(); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); public Md5FilesEntity getMd5FilesEntity() { return Md5FilesEntity; } public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) { Md5FilesEntity = md5FilesEntity; } public String execute() heittää IOException { Merkkijono fileCode = null; kokeile { fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename()); session.setAttribute("fileCode", fileCode); //Ensimmäisellä kerralla se laskettiinMD5Arvo tallennetaan väliaikaisestiIstuntoKeskiverto } catch (Poikkeus e) { TODO Automaattisesti luotu catch block e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode1(fileCode); palautus "onnistuminen"; } julkinen merkkijono SetCrypt2() { Merkkijono fileCode2 = null; kokeile { fileCode2 = Md5_dao .getFileCode("e:" + Md5FilesEntity.getFilename()); } catch (Poikkeus e) { TODO Automaattisesti luotu catch block e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode2(fileCode2); System.out.println("session1"+session.getAttribute("fileCode")); if (fileCode2 .equals(session.getAttribute("fileCode"))) { palautus "onnistuminen"; } else { palauta "epäonnistuminen"; } } } Neljännessä vaiheessa toiminto alkaa hypätä arvojen Md5_dao paketti com.crypt.dao; tuonti com.crypt.md5.Md5Crypt_1; tuonti com.crypt.md5.Md5Crypt_2; Julkinen luokka Md5_dao { julkinen staattinen merkkijono getFileCode(Merkkijono, tiedostonimi) heittää Poikkeuksen { System.out.println(tiedostoNimi); Merkkijonon hashCode = Md5Crypt_1.getHash(tiedostonimi, "MD5"); System.out.println(hashCode); return hashCode; } } Viides vaihe on luoda järjestelmään API, jolla lasketaan tiedoston MD5-arvo, jolloin se kutsutaan suoraan DAO:ssa, ja nyt se käsitellään suoraan Md5Crypt_1-menetelmällä paketti com.crypt.md5; tuo java.io.*; tuo java.security.*; Julkinen luokka Md5Crypt_1 { julkinen staattinen hahmo[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static void main(String[] args) heittää Exception { Merkkijono fileName = "e:/111.txt"; Merkkijonon hashType = "MD5"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } julkinen staattinen merkkijono getHash(Merkkijonon tiedostonimi, merkkijonon hashType) heittää poikkeus { InputStream fis; fis = uusi FileInputStream(fileName); byte[] buffer = uusi tavu[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; kun ((numRead = fis.read(buffer)) > 0) { md5.update(puskuri, 0, numRead); } fis.close(); return toHexString(md5.digest()); } julkinen staattinen merkkijono toHexString(tavu[] b) { StringBuilder sb = uusi StringBuilder(b.pituus * 2); //Rakenna merkkijonogeneraattori ja alustetaan se määriteltyyn merkkijonon sisältöön kun (int i = 0; I < b.pituus; i++) { sb.append(hexChar[(b& 0xf0) >>> 4]); liittäämetodit lisäävät aina nämä merkit generaattorin loppuun sb.append(hexChar[b& 0x0f]); } return sb.toString(); } } Vaihe 6: Kun tiedoston MD5-arvo on laskettu onnistuneesti, ensimmäinen MD5 tallennetaan sessioon käynnissä, ja struts2-konfiguraatiotiedoston konfiguroinnin kautta siirrytään seccess.jsp:hen, näytetään MD5-arvo, joka lasketaan ensimmäistä kertaa, ja kehotetaan aloittamaan toinen laskenta: Lähdekoodi Success.jsp: <body> Ensimmäisellä kerralla se laskettiinMD5Arvo 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>Tiedostonimi:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="start" /> </td> </tr> </table> </form> <form> <textarea style="text-align: vasen; " rivit = "10" solat = "41" readonly="readonly"> <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:property value="#Md5FilesEntity.Md5FileCode" /> </s:iterator> </textarea> </form> </center> </body> Vaihe 7: Aloita toinen lähetys ja laske seMD5Arvo lasketaan toisen kerran sen jälkeen, kun se lasketaan uudelleen yllä olevan prosessin mukaisestiMD5Arvoa verrataan ensimmäisen kerran arvoon, jos se on kaksinkertainenMD5 jos se on sama, se tarkoittaa, ettei manipulointia ole; Jos kahdestiMD5Jos arvo on erilainen, asiakirjaa on muokattu. Näin koko järjestelmä on valmis. Asiakirjojen väärentämisen estävän järjestelmän testaus Laita järjestelmä telineelleTomact 6.0tule ylös ja tajuaWEBJuokse. Alla on järjestelmän testikaavio: Vaihe 1: Lisää ne tiedostot, jotka täytyy laskea. Ja iskeä tiukasti"Aloita" -painiketta aloittaaksesi laskemisen.
Toinen vaihe lasketaanMD5, insuccess.jspnäyttää ensimmäisen lasketunMD5arvo ja näyttö. Toinen laskenta tehdään myös, jotta voidaan selvittää, onko sitä manipuloitu.
Kolmas vaihe on suorittaa toinen laskenta ilman asiakirjan muokkaamistaMD5arvo. Jos manipulointia ei tapahdu, sivu ilman hyppyä hypätään suoraan ja "tiedostoa ei ole manipuloitu" näytetään. Jos siihen on manipuloitu, se osoittaa, että asiakirjaan on manipuloitu.
Vaihe 4: Tee muutoksia tiedostoon ja toista yllä oleva testi Ensimmäinen laskelma:
Kun laskenta on onnistunut:
Viides vaihe on tarkoituksella manipuloida asiakirjaa ja laskea se. Periaatteessa asiakirjaa manipuloidaan ja lasketaan kahdestiMD5Ei, vertaillessa sinulle pitäisi ilmoittaa, että tiedostoon on muokattu.
Tässä vaiheessa koko järjestelmän testaus on valmis.
|