Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 15992|Atbildi: 1

[Drošības apmācība] To izmanto arī Tencent! Tīmekļa failu pretviltošanas sistēma (MD5 šifrēšanas ieviešana) pretuzlaušanas apmācība

[Kopēt saiti]
Publicēts 20.11.2014 14:04:34 | | | |
MD5Algoritma pārskats
MD5Funkcija ir informācijas daļa(ziņojums)Informācijas apkopojumu ģenerēšana(ziņojums-apkopojums), kopsavilkums ir unikāls informācijai,To var izmantot kā ciparparakstu. Izmanto, lai pārbaudītu dokumenta derīgumu(Vai dati ir pazaudēti vai bojāti),Lietotāja paroles šifrēšana, jaucējvērtība tiek aprēķināta jaucējfunkcijā. Ievadiet jebkura garuma apkārtējo failu, lai to ģenerētu128Vesels bita skaitlis. Dažu neatgriezenisku algoritma īpašību dēļ tam ir laba drošība šifrēšanas lietojumprogrammās. unMD5Algoritmu izmantošanai nav jāmaksā nekādas autortiesības. Ne unikalitāte, ne neatgriezeniskums nav absolūti, teorētiski analizējot to kā attiecības daudzi pret vienu, bet varbūtība, ka divi dažādi informācijas gabali radīs vienu un to pašu kopsavilkumu, ir maza. Neatgriezenisks nozīmē, ka aprēķināšanas un aprēķināšanas laiks, kas nepieciešams, lai izsecinātu ievadi no izvades, ir pārāk liels, un vārdnīcu meklēšanas metode prasa pārāk daudz vietas krātuvē.
WebsistēmaDizaina idejas
Šī sistēma ir balstīta uz Java Webun arstatnis 2, lai to sasniegtu. Dizaina pamatideja ir nodotTīmeklislapa, lai divreiz aprēķinātu failu sistēmas ārējā atmiņāMD5vērtību un salīdziniet, ja tas ir vienāds, fails nav manipulēts, ja tas ir atšķirīgs, tas nozīmē, ka fails ir manipulēts.
WebVersijas faila pret viltojumiem drošas sistēmas detalizētas dizaina idejas: nokārtotasJSPIzgūstiet failu, kas jāaprēķina sistēmas ārējā atmiņā.JSPPēc iesniegšanas nokārtojietstatnis 2noDarbībaPāriet uz vērtībāmjavaloģiskais slānis. loģiskajā slānīDarbībaVidējs zvansdaometodes,daoAprēķins ir iekapsulētsMD5vērtība.DaoMetodeJSPDokumenti, kas nāk, un kalkulatoriMD5Kad aprēķins ir pabeigts, atgrieziet vērtības sākotnējo ceļuDarbībaŠī ir pirmā reize, kad fails tiek aprēķinātsMD5vērtību, saglabājiet toSesija, lai to varētu salīdzināt ar otroMD5Vērtības. Pēc pirmās veiksmīgās izpildes pārejiet uzPanākumilapa. Tagad sāciet faila otro reiziMD5Aprēķins, arī ar iepriekš minēto metodi. Pēc aprēķinaMD5Pēc vērtības tiek aprēķināta otrā reizeMD5Vērtība ir tāda pati kā pirmā aprēķinātā un tiek saglabātasesijaJa vērtības ir vienādas, izmaiņas nenotiek. Ja tas ir atšķirīgs, tas nozīmē, ka tas ir manipulēts.
Sistēmas ieviešana
1. solis,Index.jspAvota kods
<!-- Index.jspPievienojiet failus no sistēmas krātuves šeit-->
                <center>
                        <form action="fileCrypt" method="get">
                                <table>
                                        <tr>
                                                <td>Faila nosaukums</td>:
                                                <td><input type="file" name="Md5FilesEntity.filename" />
                                                </td>
                                                <td><input type="submit" value="start" />
                                                </td>
                                        </tr>
                                </table>
                        </form>
                </center>
2. solis,statņiPirmkods konfigurācijas failā
<!-- statņi2Konfigurācijas faili-->
<struts>
        <constant value="true" name="struts.devMode" />
        <constant value="zh_CN" name="struts.locale" />
        <constant value="utf-8" name="struts.i18n.encoding" />
       
        <pakotnes nosaukums="noklusējums" extends="struts-default">
                <darbības nosaukums="mdeAction" class="com.crypt.action.mdeAction"
                        method="codeCrype">
                        <result name="success">/index.jsp</result>
                </action>
                <action name="fileCrypt" class="com.crypt.action.FilesCryptAction">
                        <result name="success">/success.jsp</result>
                </action>
                <action name="fileCrypt2" class="com.crypt.action.FilesCryptAction" method="SetCrypt2">
                        <result name="success">/FilnallySuccess.jsp</result>
                        <result name="fail">/fail.jsp</result>
                </action>
</struts>   
Trešais solis ir pāriet uz FilesCryptAction pēc statņiem2
pakete com.crypt.action;
importēt java.io.IOException;
importēt javax.servlet.http.HttpServletRequest;
importēt javax.servlet.http.HttpSession;
importēt org.apache.struts2.ServletActionContext;
importa com.crypt.dao.Md5_dao;
importēt com.opensymphony.xwork2.ActionSupport;
importēt com.crypt.entity.Md5FilesEntity;
publiskās klases FilesCryptAction paplašina ActionSupport {
        privāts Md5FilesEntity Md5FilesEntity = jauns Md5FilesEntity();
       
        HttpServletRequest pieprasījums = ServletActionContext.getRequest();
        HttpSession sesija = request.getSession();
        public Md5FilesEntity getMd5FilesEntity() {
                atgriezt Md5FilesEntity;
        }
        public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) {
                Md5FilesEntity = md5FilesEntity;
        }
        public String execute() met IOException {
                String fileCode = null;
                izmēģināt {
                        fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename());
                        session.setAttribute("faila kods", faila kods); //Pirmo reizi tas tika aprēķinātsMD5Vērtība tiek īslaicīgi saglabātasesijaVidējas intensitātes sāpes
                } nozveja (e izņēmums) {
                        TODO Automātiski ģenerēts nozvejas bloks
                        e.printStackTrace();
                }
                Md5FilesEntity.setFileAfterHashCode1(faila kods);
                atgriešanās "panākumi";
        }
        publiskā virkne SetCrypt2() {
                Virknes failsCode2 = null;
                izmēģināt {
                        faila kods2 = Md5_dao
                                        .getFileCode("e:" + Md5FilesEntity.getFilename());
                } nozveja (e izņēmums) {
                        TODO Automātiski ģenerēts nozvejas bloks
                        e.printStackTrace();
                }
                Md5FilesEntity.setFileAfterHashCode2(fileCode2);
                System.out.println("session1"+session.getAttribute("fileCode"));
                if (fileCode2 .equals(session.getAttribute("fileCode"))) {
                        atgriešanās "panākumi";
                } citādi {
                        atgriezties "neizdodas";
                }
        }
}
          
Ceturtajā solī darbība sāk pāriet uz Md5_dao ar vērtībām
pakete com.crypt.dao;
importa com.crypt.md5.Md5Crypt_1;
importa com.crypt.md5.Md5Crypt_2;
publiskā klase Md5_dao {
        publiskā statiskā virkne getFileCode(String fileName) met izņēmumu {
                System.out.println(faila nosaukums);
                String hashCode = Md5Crypt_1.getHash(fileName, "MD5");
                System.out.println(hashCode);
                atgriezt hashCode;
        }
}       
Piektais solis ir izveidot API sistēmā, lai aprēķinātu faila MD5 vērtību, tāpēc izsauciet to tieši DAO, un tagad tas tiek tieši apstrādāts Md5Crypt_1 metodē
pakete com.crypt.md5;
importa java.io.*;
importēt java.security.*;
publiskā klase Md5Crypt_1 {
        publiskais statiskais char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7',
                        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        public static void main(String[] args) met Izņēmums {
                String fileName = "e:/111.txt";
                String hashType = "MD5";
                System.out.println(hashType + " == " + getHash(fileName, hashType));
        }
        publiskā statiskā virkne getHash(String fileName, String hashType)
                        met Izņēmums {
                InputStream fis;
                fis = jauns FileInputStream(faila nosaukums);
                baits[] buferis = jauns baits[1024];
                MessageDigest md5 = MessageDigest.getInstance(hashType);
                int numRead = 0;
                kamēr ((numRead = fis.read(buffer)) > 0) {
                        md5.update(buferis, 0, numRead);
                }
                fis.close();
                atgriezties uzHexString(md5.digest());
        }
        publiskā statiskā virkne toHexString(baits[] b) {
                StringBuilder sb = jauns StringBuilder(b.garums * 2); //Izveidojiet virkņu ģeneratoru un inicializējiet to norādītajā virknes saturā
                for (int i = 0; I < b.garums; i++) {
                        sb.append(hexChar[(b& 0xf0) >>> 4]); PievienotMetodes vienmēr pievieno šīs rakstzīmes ģeneratora beigās
                        sb.append(hexChar[b& 0x0f]);
                }
                atgriezt sb.toString();
        }
}
6. solis: Pēc veiksmīgas faila MD5 vērtības aprēķināšanas pirmais MD5 tiek saglabāts darbībā esošajā sesijā, un, konfigurējot statņu2 konfigurācijas failu, pārejiet uz seccess.jsp, parādiet pirmo reizi aprēķināto MD5 vērtību un lūdziet sākt otro aprēķinu:
Pirmkods Success.jsp:
<body>
   Pirmo reizi tas tika aprēķinātsMD5Vērtība ir:
   <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L">
                <s:property value="#Md5FilesEntity.fileAfterHashCode1" />
        </s:iterators>
       
                <center>
                        <form action="fileCrypt2" method="get">
                                <table>
                                        <tr>
                                                <td>Faila nosaukums</td>:
                                                <td><input type="file" name="Md5FilesEntity.filename" />
                                                </td>
                                                <td><input type="submit" value="start" />
                                                </td>
                                        </tr>
                                </table>
                        </form>
                        <form>
                                <textarea style="text-align: pa kreisi; " rows="10" cols="41"
                                        readonly="tikai lasāms">
        <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L">
                <s:property value="#Md5FilesEntity.Md5FileCode" />
        </s:iterators>
        </textarea>
                        </form>
                </center>
  </body>
7. solis: sāciet otro iesniegumu un aprēķiniet toMD5Vērtība tiek aprēķināta otro reizi pēc tam, kad tā tiek aprēķināta vēlreiz saskaņā ar iepriekš minēto procesuMD5Vērtība tiek salīdzināta ar pirmās reizes vērtību, ja tā ir divas reizesMD5        ja tas ir tas pats, tas nozīmē, ka nav manipulāciju; Ja divas reizesMD5Ja vērtība ir atšķirīga, dokuments ir manipulēts. Tādējādi visa sistēma ir pabeigta.
Dokumentu drošas sistēmas testēšana
Ievietojiet sistēmu uz plauktaTomact 6,0nāciet un saprotietTīmeklisPalaist. Zemāk ir sistēmas testa shēma:
1. darbība: Pievienojiet failus, kas jāaprēķina. Un apspiest"Sākt", lai sāktu aprēķināt.

Tiek aprēķināts otrais solisMD5,success.jspparāda pirmo aprēķinātoMD5vērtību un displeju. Tiek veikts arī otrs aprēķins, lai noteiktu, vai tas ir manipulēts.

Trešais solis ir veikt otru aprēķinu, nemanipulējot ar dokumentuMD5vērtība. Ja nav manipulācijas, lapa bez lēciena tiks pārlēkta tieši un tiks parādīts "fails nav manipulēts". Ja dokuments ir sagrozīts, tas parādīs, ka dokuments ir sagrozīts.



4. solis: veiciet izmaiņas failā un atkārtojiet iepriekš minēto testu
Pirmais aprēķins:


Pēc veiksmīga aprēķina:

Piektais solis ir apzināti manipulēt ar dokumentu un aprēķināt to. Principā dokuments tiek manipulēts un aprēķināts divas reizesMD5Nē, salīdzinot, jums jāsaņem uzvedne, ka fails ir manipulēts.


Šajā brīdī visas sistēmas testēšana ir pabeigta.







Iepriekšējo:Izcilo uzņēmēju asociācija rīkoja aktivitāti "Atkritumu pārstrāde, resursu izmantošana"
Nākamo:[C#] 12306 Tiek realizēts biļešu sagrābšanas pamats
Publicēts 20.11.2014 14:13:20 |
Uzzināju
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com