|
ΜΔ5Επισκόπηση αλγορίθμου ΜΔ5Η συνάρτηση είναι σε μια πληροφορία(μήνυμα)Δημιουργία συνόψεων πληροφοριών(σύνοψη μηνυμάτων), η περίληψη είναι μοναδική για τις πληροφορίες,Μπορεί να χρησιμοποιηθεί ως ψηφιακή υπογραφή. Χρησιμοποιείται για την επαλήθευση της εγκυρότητας του εγγράφου(Εάν υπάρχουν χαμένα ή κατεστραμμένα δεδομένα),Κρυπτογράφηση του κωδικού πρόσβασης του χρήστη, η τιμή κατακερματισμού υπολογίζεται στη συνάρτηση κατακερματισμού. Εισαγάγετε μια συμβολοσειρά byte οποιουδήποτε μήκους για να δημιουργήσετε μία128Ο ακέραιος αριθμός του bit. Λόγω ορισμένων μη αναστρέψιμων χαρακτηριστικών του αλγορίθμου, έχει καλή ασφάλεια στις εφαρμογές κρυπτογράφησης. καιΜΔ5Η χρήση αλγορίθμων δεν απαιτεί την καταβολή τελών πνευματικών δικαιωμάτων. Ούτε η μοναδικότητα ούτε η μη αναστρεψιμότητα είναι απόλυτες, αναλύοντάς την θεωρητικά ως σχέση πολλά προς ένα, αλλά η πιθανότητα δύο διαφορετικών πληροφοριών να παράγουν την ίδια περίληψη είναι μικρή. Μη αναστρέψιμο σημαίνει ότι ο χρόνος υπολογισμού και υπολογισμού που απαιτείται για να συναχθεί η είσοδος από την έξοδο είναι πολύ μεγάλος και η μέθοδος αναζήτησης λεξικών απαιτεί πολύ μεγάλο χώρο αποθήκευσης. ΙστόςΣύστημαΙδέες σχεδίασης Αυτό το σύστημα βασίζεται σε Java Web, και με τη βοήθειαγόνατο2για να το πετύχουμε αυτό. Η βασική σχεδιαστική ιδέα είναι να περάσειςιστόςσελίδα για να υπολογίσετε ένα αρχείο στην εξωτερική μνήμη του συστήματος δύο φορέςΜΔ5τιμή, και σύγκριση, εάν είναι το ίδιο, το αρχείο δεν έχει παραβιαστεί, εάν είναι διαφορετικό, σημαίνει ότι το αρχείο έχει παραβιαστεί. ΙστόςΈκδοση αρχείο απαραβίαστο σύστημα λεπτομερείς ιδέες σχεδίασης: πέρασεjspΑνακτήστε ένα αρχείο που πρέπει να υπολογιστεί στην εξωτερική μνήμη του συστήματος.jspΜετά την υποβολή, περάστεγόνατο2τηςΔράσηΜετάβαση σε με τιμέςΙάβαλογικό επίπεδο. στο λογικό επίπεδοΔράσηΜεσαία κλήσηΝτάομεθόδους,ΝτάοΟ υπολογισμός είναι ενθυλακωμένοςΜΔ5αξία.ΤάοΜέθοδοςjspΈγγραφα που έρχονται και αριθμομηχανέςΜΔ5Αφού ολοκληρωθεί ο υπολογισμός, επιστρέψτε την αρχική διαδρομή της τιμήςΔράσηΑυτή είναι η πρώτη φορά που υπολογίζεται ένα αρχείοΜΔ5αξία, αποθηκεύστε το σεΣυνεδρία, ώστε να μπορεί να συγκριθεί με το δεύτεροΜΔ5Αξίες. Μετά την πρώτη επιτυχημένη εκτέλεση, μεταβείτε στοΕπιτυχίασελίδα. Τώρα ξεκινήστε τη δεύτερη φορά του αρχείουΜΔ5Υπολογισμός, επίσης με την παραπάνω μέθοδο. Μετά τον υπολογισμόΜΔ5Μετά την τιμή, υπολογίζεται η δεύτερη φοράΜΔ5Η τιμή είναι ίδια με την πρώτη που υπολογίστηκε και αποθηκεύεται στοσυνεδρίαΕάν οι τιμές είναι ίδιες, δεν υπάρχει καμία αλλαγή. Εάν είναι διαφορετικό, σημαίνει ότι έχει παραβιαστεί. Υλοποίηση συστήματος Βήμα 1,Index.jspπηγαίο κώδικα στο <!-- Index.jspΠροσθέστε αρχεία από τον χώρο αποθήκευσης του συστήματος εδώ--> <center> <form action="fileCrypt" method="get"> <table> <tr> <td>Όνομα αρχείου:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="έναρξη" /> </td> </tr> </table> </form> </center> Βήμα 2,αντηρίδεςΟ πηγαίος κώδικας στο αρχείο διαμόρφωσης <!-- αντηρίδες2Αρχεία διαμόρφωσης--> <struts> <constant value="true" name="struts.devMode" /> <σταθερή τιμή="zh_CN" name="struts.locale" /> <σταθερή τιμή="utf-8" name="struts.i18n.encoding" /> <όνομα πακέτου="προεπιλογή" extends="struts-default"> <όνομα δράσης="mdeAction" class="com.crypt.action.mdeAction" method="codeCrype"> <όνομα αποτελέσματος="επιτυχία">/index.jsp</result> </action> <όνομα δράσης="fileCrypt" class="com.crypt.action.FilesCryptAction"> <όνομα αποτελέσματος="επιτυχία">/success.jsp</result> </action> <action name="fileCrypt2" class="com.crypt.action.FilesCryptAction" method="SetCrypt2"> <όνομα αποτελέσματος="επιτυχία">/FilnallySuccess.jsp</result> <όνομα αποτελέσματος="fail">/fail.jsp</result> </action> </struts> Το τρίτο βήμα είναι να μεταβείτε στο FilesCryptAction μετά το struts2 πακέτο com.crypt.action; εισαγωγή java.io.IOException; εισαγωγή javax.servlet.http.HttpServletRequest; εισαγωγή javax.servlet.http.HttpSession; εισαγωγή org.apache.struts2.ServletActionContext; com.crypt.dao.Md5_dao εισαγωγής· εισαγωγή com.opensymphony.xwork2.ActionSupport; εισαγωγή com.crypt.entity.Md5FilesEntity; δημόσιας τάξης FilesCryptAction επεκτείνει το ActionSupport { private Md5FilesEntity Md5FilesEntity = νέο Md5FilesEntity(); Αίτημα HttpServletRequest = ServletActionContext.getRequest(); Συνεδρία HttpSession = request.getSession(); public Md5FilesEntity getMd5FilesEntity() { επιστροφή Md5FilesEntity; } public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) { Md5FilesEntity = md5FilesEntity; } public String execute() ρίχνει IOException { String fileCode = null; δοκιμάστε { fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename()); session.setAttribute("fileCode", fileCode); //Την πρώτη φορά που υπολογίστηκεΜΔ5Η τιμή αποθηκεύεται προσωρινά στοσυνεδρίαΜέτριος } catch (Εξαίρεση e) { TODO Μπλοκ σύλληψης που δημιουργείται αυτόματα e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode1(fileCode); επιστροφή "επιτυχία"? } δημόσια συμβολοσειρά SetCrypt2() { Συμβολοσειρά fileCode2 = null; δοκιμάστε { fileCode2 = Md5_dao .getFileCode("e:" + Md5FilesEntity.getFilename()); } catch (Εξαίρεση e) { TODO Μπλοκ σύλληψης που δημιουργείται αυτόματα e.printStackTrace(); } Md5FilesEntity.setFileAfterHashCode2(fileCode2); System.out.println("session1"+session.getAttribute("fileCode")); if (fileCode2 .equals(session.getAttribute("fileCode"))) { επιστροφή "επιτυχία"? } αλλιώς { επιστροφή "αποτυχία"? } } } Στο τέταρτο βήμα, η δράση αρχίζει να μεταπηδά στο Md5_dao με τιμές πακέτο com.crypt.dao; com.crypt.md5.Md5Crypt_1 εισαγωγής· com.crypt.md5.Md5Crypt_2 εισαγωγής· δημόσια τάξη Md5_dao { δημόσια στατική συμβολοσειρά getFileCode(String fileName) ρίχνει Εξαίρεση { System.out.println(όνομααρχείου); Κωδικός κατακερματισμού συμβολοσειράς = Md5Crypt_1.getHash(fileName, "MD5"); System.out.println(κωδικός κατακερματισμού); επιστροφή hashCode; } } Το πέμπτο βήμα είναι να δημιουργήσετε ένα API στο σύστημα για να υπολογίσετε την τιμή MD5 ενός αρχείου, επομένως καλέστε το απευθείας στο DAO και τώρα υποβάλλεται σε άμεση επεξεργασία με τη μέθοδο Md5Crypt_1 πακέτο com.crypt.md5; εισαγωγή java.io.*; εισαγωγή java.security.*; δημόσια τάξη Md5Crypt_1 { δημόσιος στατικός χαρακτήρας[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; δημόσιο στατικό void main(String[] args) ρίχνει Εξαίρεση { Συμβολοσειρά fileName = "e:/111.txt"; Τύπος κατακερματισμού συμβολοσειράς = "MD5"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } δημόσια στατική συμβολοσειρά getHash(String fileName, String hashType) ρίχνει Εξαίρεση { Ροή εισόδου fis; fis = νέο FileInputStream(fileName); byte[] buffer = νέο byte[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; ενώ ((numRead = fis.read(buffer)) > 0) { md5.update(buffer, 0, numRead); } fis.close(); επιστροφή στοHexString(md5.digest()); } δημόσια στατική συμβολοσειρά toHexString(byte[] b) { StringBuilder sb = νέο StringBuilder(b.length * 2); //Κατασκευάστε μια γεννήτρια συμβολοσειρών και αρχικοποιήστε την στα καθορισμένα περιεχόμενα συμβολοσειράς για (int i = 0; i < β.μήκος; i++) { sb.append(hexChar[(b&0xf0) >>> 4])· ΠροσάρτησηΟι μέθοδοι προσθέτουν πάντα αυτούς τους χαρακτήρες στο τέλος της γεννήτριας sb.append(hexChar[b&0x0f]); } επιστροφή sb.toString(); } } Βήμα 6: Μετά τον επιτυχή υπολογισμό της τιμής του MD5 του αρχείου, το πρώτο MD5 αποθηκεύεται στην περίοδο λειτουργίας σε δράση και μέσω της διαμόρφωσης του αρχείου διαμόρφωσης struts2, μεταβείτε στο seccess.jsp, εμφανίστε την τιμή MD5 που υπολογίστηκε για πρώτη φορά και ζητήστε να ξεκινήσει ο δεύτερος υπολογισμός: Πηγαίος κώδικας σε Success.jsp: <body> Την πρώτη φορά που υπολογίστηκεΜΔ5Η τιμή είναι: <s:τιμή επαναλήπτη="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:τιμή ιδιότητας="#Md5FilesEntity.fileAfterHashCode1" /> </s:επαναλήπτης> <center> <form action="fileCrypt2" method="get"> <table> <tr> <td>Όνομα αρχείου:</td> <td><input type="file" name="Md5FilesEntity.filename" /> </td> <td><input type="submit" value="έναρξη" /> </td> </tr> </table> </form> <form> <textarea style="text-align: αριστερά; " rows="10" cols="41" readonly="μόνο για ανάγνωση"> <s:τιμή επαναλήπτη="Md5FilesEntity" id="Md5FilesEntity" status="L"> <s:τιμή ιδιότητας="#Md5FilesEntity.Md5FileCode" /> </s:επαναλήπτης> </textarea> </form> </center> </body> Βήμα 7: Ξεκινήστε τη δεύτερη υποβολή και υπολογίστε τηνΜΔ5Η τιμή υπολογίζεται τη δεύτερη φορά μετά τον υπολογισμό της ξανά σύμφωνα με την παραπάνω διαδικασίαΜΔ5Η τιμή συγκρίνεται με την τιμή της πρώτης φοράς, εάν είναι διπλάσιαΜΔ5 Εάν είναι το ίδιο, σημαίνει ότι δεν υπάρχει παραβίαση. Αν δύο φορέςΜΔ5Εάν η τιμή είναι διαφορετική, το έγγραφο έχει παραβιαστεί. Έτσι, ολόκληρο το σύστημα ολοκληρώνεται. Έλεγχος συστήματος με προστασία από παραβιάσεις εγγράφων Τοποθετήστε το σύστημα στο ράφιΤομή 6.0Ελάτε και συνειδητοποιήστειστόςΤρέξιμο. Παρακάτω είναι ένα διάγραμμα δοκιμής του συστήματος: Βήμα 1: Προσθέστε τα αρχεία που πρέπει να υπολογιστούν. Και να πατάξουμε»Αρχή" για να ξεκινήσετε τον υπολογισμό.
Το δεύτερο βήμα υπολογίζεταιΜΔ5, σεsuccess.jspεμφανίζει το πρώτο υπολογισμένοΜΔ5αξία και εμφάνιση. Ένας δεύτερος υπολογισμός ζητείται επίσης για να διαπιστωθεί εάν έχει παραβιαστεί.
Το τρίτο βήμα είναι να εκτελέσετε έναν δεύτερο υπολογισμό χωρίς να παραβιάσετε το έγγραφοΜΔ5αξία. Εάν δεν υπάρχει παραβίαση, η σελίδα χωρίς το άλμα θα μεταπηδηθεί απευθείας και θα εμφανιστεί το "αρχείο δεν έχει παραβιαστεί". Εάν έχει παραβιαστεί, θα δείξει ότι το έγγραφο έχει παραβιαστεί.
Βήμα 4: Κάντε αλλαγές στο αρχείο και επαναλάβετε την παραπάνω δοκιμή Πρώτος υπολογισμός:
Αφού ο υπολογισμός είναι επιτυχής:
Το πέμπτο βήμα είναι να παραβιάσετε σκόπιμα το έγγραφο και να το υπολογίσετε. Κατ' αρχήν, το έγγραφο παραποιείται και υπολογίζεται δύο φορέςΜΔ5Όχι, κατά τη σύγκριση, θα πρέπει να σας ζητηθεί ότι το αρχείο έχει παραβιαστεί.
Σε αυτό το σημείο ολοκληρώνεται η δοκιμή ολόκληρου του συστήματος.
|