See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 15992|Vastuse: 1

[Ohutusõpetus] Tencent kasutab seda samuti! Veebifailide manipuleerimisvastane süsteem (MD5 krüpteerimise rakendus) häkkimisvastane õpetus

[Kopeeri link]
Postitatud 20.11.2014 14:04:34 | | | |
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.







Eelmine:Silmapaistvate ettevõtjate ühing korraldas tegevust "Jäätmete taaskasutus, ressursside kasutamine"
Järgmine:[C#] 12306 Piletite haaramise alus realiseerub
Postitatud 20.11.2014 14:13:20 |
Õppinud
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com