Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 15992|Yanıt: 1

[Güvenlik Eğitimi] Tencent de kullanıyor! Web dosyaları için müdahale önleme sistemi (MD5 şifreleme uygulaması) anti-hackleme eğitimi

[Bağlantıyı kopyala]
Yayınlandı 20.11.2014 14:04:34 | | | |
MD5Algoritma genel bakış
MD5Fonksiyon bir bilgi parçasına(mesaj)Bilgi özetleri oluşturun(mesaj-özet), özet bilgiye özgündür,Dijital imza olarak kullanılabilir. Belgenin geçerliliğini doğrulamak için kullanılır(Kayıp ya da bozuk veri olup olmadığını),Kullanıcının şifresinin şifrelenmesinde, hash değeri hash fonksiyonunda hesaplanır. Herhangi bir uzunlukta bytest ringi girerek bir tane oluşturun128Parçanın tam sayısı. Algoritmanın bazı geri döndürülemez özellikleri nedeniyle, şifreleme uygulamalarında iyi bir güvenliğe sahiptir. veMD5Algoritmaların kullanımı herhangi bir telif hakkı ücreti ödemeyi gerektirmez. Ne benzersizlik ne de geri dönüşmezlik mutlak değildir; teorik olarak çoğuna bir ilişki olarak analiz edilir, ancak iki farklı bilginin aynı özeti üretme olasılığı küçüktür. Geri döndürülmez, çıktıdan girdiyi çıkarmak için gereken hesaplama ve hesaplama süresinin çok büyük olduğu ve sözlük arama yönteminin çok fazla depolama alanı gerektirdiği anlamına gelir.
WebSistemTasarım fikirleri
Bu sistem Java Web temellidir, vestrut2bunu başarmak için. Temel tasarım fikri geçmektirWebSistem dış belleğinde bir dosyayı iki kez hesaplamak için sayfa açınMD5değeri ve karşılaştırın, eğer aynıysa, dosya değiştirilmemiş, farklıysa, dosya değiştirilmiş demektir.
WebSürüm dosyası müdahaleye karşı sistem detaylı tasarım fikirleri: geçtiJSPSistemin harici belleğinde hesaplanması gereken bir dosyayı alın.JSPGönderdikten sonra geçinstrut2ofÇatışmaDeğerlerle geçişJavamantık katmanı. mantıksal katmandaÇatışmaOrta çağrıDaoyöntemler,DaoHesaplama kapsüllenmiştirMD5değer.DaoYöntemJSPGelen belgeler ve hesap makineleriMD5Hesaplama tamamlandıktan sonra, değerin orijinal yolunu döndürünÇatışmaBu, bir dosyanın ilk kez hesaplanmasıdırMD5değer, kaydetOturum, böylece ikinci ile karşılaştırılabilirMD5Değerler. İlk başarılı infazdan sonraBaşarısayfa. Şimdi dosyanın ikinci kez başlamasına başlayınMD5Hesaplama, yukarıdaki yöntemle de yapılır. Hesaplamadan sonraMD5Değerden sonra ikinci kez hesaplanırMD5Değer ilk hesaplanan ile aynıdır ve kaydedilirOturumDeğerler aynıysa, değişiklik olmaz. Farklıysa, bu onun kurandığı anlamına gelir.
Sistem uygulaması
Adım 1,Index.jspKaynak kodu içinde
<!-- Index.jspSistem depolamasından dosyaları buraya ekleyin-->
                <center>
                        <form action="fileCrypt" metod="almak">
                                <table>
                                        <tr>
                                                <td>Dosya adı:</td>
                                                <td><input type="file" name="Md5FilesEntity.filename" />
                                                </td>
                                                <td><input type="submit" value="start" />
                                                </td>
                                        </tr>
                                </table>
                        </form>
                </center>
Adım 2,StrutsYapılandırma dosyasındaki kaynak kodu
<!-- struts2Yapılandırma dosyaları-->
<struts>
        <constant value="true" name="struts.devMode" />
        <sabit değer="zh_CN" name="struts.locale" />
        <sabit değer="utf-8" name="struts.i18n.encoding" />
       
        <paket adı="default" extends="struts-default">
                <action name="mdeAction" class="com.crypt.action.mdeAction"
                        method="codeCrype">
                        <sonuç adı="başarı">/index.jsp</result>
                </action>
                <action name="fileCrypt" class="com.crypt.action.FilesCryptAction">
                        <result name="başarı">/success.jsp</result>
                </action>
                <action name="fileCrypt2" class="com.crypt.action.FilesCryptAction" metod="SetCrypt2">
                        <result name="başarı">/FilnallySuccess.jsp</result>
                        <result name="fail">/fail.jsp</result>
                </action>
</struts>   
Üçüncü adım, struts2'den sonra FilesCryptAction'a geçmektir
paket com.crypt.action;
java.io.IOException içe aktarmak;
javax.servlet.http.HttpServletRequest import et;
javax.servlet.http.HttpSession;
org.apache.struts2.ServletActionContext;
ithalat com.crypt.dao.Md5_dao;
com.opensymphony.xwork2.ActionSupport;
com.crypt.entity.Md5FilesEntity içe aktar;
public class FilesCryptAction genişletir ActionSupport {
        özel Md5FilesEntity Md5FilesEntity = yeni Md5FilesEntity();
       
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession oturumu = request.getSession();
        public Md5FilesEntity getMd5FilesEntity() {
                return Md5FilesEntity ile döndür;
        }
        public void setMd5FilesEntity(Md5FilesEntity md5FilesEntity) {
                Md5FilesEntity = md5FilesEntity;
        }
        public String execute() IOException atar, {
                String fileCode = null;
                Try {
                        fileCode = Md5_dao.getFileCode("e:" + Md5FilesEntity.getFilename());
                        session.setAttribute("fileCode", fileCode); //İlk kez hesaplandığındaMD5Değer geçici olarakOturumOrta
                } yakalama (İstisna e) {
                        TODO Otomatik olarak oluşturulan yakalama bloğu
                        e.printStackTrace();
                }
                Md5FilesEntity.setFileAfterHashCode1(fileCode);
                "başarı" duruşu;
        }
        public String SetCrypt2() {
                Dizi fileCode2 = null;
                Try {
                        fileCode2 = Md5_dao
                                        .getFileCode("e:" + Md5FilesEntity.getFilename());
                } yakalama (İstisna e) {
                        TODO Otomatik olarak oluşturulan yakalama bloğu
                        e.printStackTrace();
                }
                Md5FilesEntity.setFileAfterHashCode2(fileCode2);
                System.out.println("session1"+session.getAttribute("fileCode"));
                if (fileCode2 .equals(session.getAttribute("fileCode")) {
                        "başarı" duruşu;
                } else {
                        return "fail";
                }
        }
}
          
Dördüncü adımda, eylem değerlerle Md5_dao atlamaya başlar
paket com.crypt.dao;
ithal com.crypt.md5.Md5Crypt_1;
ithalat com.crypt.md5.Md5Crypt_2;
Kamu sınıfı Md5_dao {
        public statik String getFileCode(String fileName) Exception atar: {
                System.out.println(fileName);
                String hashCode = Md5Crypt_1.getHash(fileName, "MD5");
                System.out.println(hashCode);
                return hashCode;
        }
}       
Beşinci adım, sistemde bir dosyanın MD5 değerini hesaplamak için bir API oluşturmaktır; bu yüzden dosyayı doğrudan DAO'da çağırır ve şimdi doğrudan Md5Crypt_1 yöntemiyle işlenir
paket com.crypt.md5;
import java.io.*;
java.security.*;
Kamu sınıfı 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) throws Exception {
                Dizi fileName = "e:/111.txt";
                Dizi hashType = "MD5";
                System.out.println(hashType + " == " + getHash(fileName, hashType));
        }
        public statik String getHash(String fileName, String hashType)
                        throws İstisna {
                InputStream fis;
                fis = yeni FileInputStream(fileName);
                byte[] buffer = yeni bayt[1024];
                MessageDigest md5 = MessageDigest.getInstance(hashType);
                int numRead = 0;
                while ((numRead = fis.read(buffer)) > 0) {
                        md5.update(buffer, 0, numRead);
                }
                fis.close();
                return to HexString(md5.digest());
        }
        public static String toHexString(byte[] b) {
                StringBuilder sb = yeni StringBuilder(b.length * 2); //Bir dizi üreticisi oluştur ve belirtilen dizim içeriğine başlat
                için (int i = 0; i < b.uzunluk; i++) {
                        sb.append(hexChar[(b& 0xf0) >>> 4]); ekmetodlar her zaman bu karakterleri jeneratörün sonuna ekler
                        sb.append(hexChar[b& 0x0f]);
                }
                return sb.toString();
        }
}
Adım 6: Dosyanın MD5 değeri başarıyla hesaplandıktan sonra, ilk MD5 oturumda çalışırken saklanır ve struts2 yapılandırma dosyasının yapılandırması yoluyla seccess.jsp'ye atlar, ilk kez hesaplanan MD5 değerini gösterir ve ikinci hesaplamaya başlamanızı önerir:
Success.jsp'daki kaynak kodu:
<body>
   İlk kez hesaplandığındaMD5Değeri şudur::
   <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L">
                <s:property value="#Md5FilesEntity.fileAfterHashCode1" />
        </s:iterator>
       
                <center>
                        <form action="fileCrypt2" metod="get">
                                <table>
                                        <tr>
                                                <td>Dosya adı:</td>
                                                <td><input type="file" name="Md5FilesEntity.filename" />
                                                </td>
                                                <td><input type="submit" value="start" />
                                                </td>
                                        </tr>
                                </table>
                        </form>
                        <form>
                                <textarea style="metin hizalaması: sol; " sıralar="10" sütunlar="41"
                                        readonly="readonly">
        <s:iterator value="Md5FilesEntity" id="Md5FilesEntity" status="L">
                <s:property value="#Md5FilesEntity.Md5FileCode" />
        </s:iterator>
        </textarea>
                        </form>
                </center>
  </body>
Adım 7: İkinci gönderimi başlatın ve hesaplayınMD5Değer, yukarıdaki süreçle tekrar hesaplandıktan sonra ikinci kez hesaplanırMD5Değer, ilk kez iki kez olduğu için değerle karşılaştırılırMD5        eğer aynıysa, bu hiçbir müdahale olmadığı anlamına gelir; İki kezMD5Değer farklıysa, belge değiştirilmiştir. Böylece, tüm sistem tamamlanmış olur.
Belge müdahale etmeye karşı sistem testi
Sistemi rafa koyTomact 6.0Yukarı çık ve fark etWebKoş. Aşağıda sistemin test diyagramı bulunmaktadır:
Adım 1: Hesaplanması gereken dosyaları ekleyin. Ve sert önlemler al"Başlangıç" tuşuna basarak hesaplamaya başlayacak.

İkinci adım hesaplanırMD5, içindesuccess.jspilk hesaplanmış olanı gösterirMD5değer ve gösteri. İkinci bir hesaplama da yapılarak değiştirilip değiştirilmediğini belirlemek için yapılır.

Üçüncü adım, belgeye müdahale etmeden ikinci bir hesaplama yapmaktırMD5değer. Eğer müdahale yoksa, atlama yapılmayan sayfa doğrudan atlanır ve "dosya kuranmamış" ifadesi gösterilir. Eğer müdahale edildiyse, belgenin müdahale edildiğini gösterir.



Adım 4: Dosyada değişiklikler yapın ve yukarıdaki testi tekrarlayın
İlk hesaplama:


Hesaplama başarılı olduktan sonra:

Beşinci adım, belgeyi bilerek kurcalamak ve hesaplamak. Prensipte, belge iki kez değiştirilir ve hesaplanırMD5Hayır, karşılaştırma yaparken, dosyanın değiştirildiği sorulmalı.


Bu noktada, tüm sistemin testi tamamlanır.







Önceki:Üstün Girişimciler Derneği "Atık Geri Dönüşümü, Kaynak Kullanımı" etkinliğini düzenledi
Önümüzdeki:[C#] 12306 Bilet kapma gerekeği ortaya çıkıyor
Yayınlandı 20.11.2014 14:13:20 |
Öğren
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com