Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 15992|Odpoveď: 1

[Bezpečnostný návod] Tencent ho tiež využíva! Systém proti manipulácii s webovými súbormi (implementácia šifrovania MD5) návod proti hackovaniu

[Kopírovať odkaz]
Zverejnené 20. 11. 2014 14:04:34 | | | |
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é.







Predchádzajúci:Asociácia vynikajúcich podnikateľov usporiadala aktivitu "Recyklácia odpadu, využívanie zdrojov"
Budúci:[C#] 12306 Základ pre získavanie lístkov je realizovaný
Zverejnené 20. 11. 2014 14:13:20 |
učený
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com