Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung, wie C# die Dateien MD5 und SHA1 erhält

Detaillierte Erklärung, wie C# die Dateien MD5 und SHA1 erhält

迷茫
迷茫Original
2017-03-26 16:32:491188Durchsuche

Als ich anfing, Programmieren zu lernen, dachte ich immer darüber nach, selbst ein paar kleine Software-Gadgets zu schreiben.

Und das ist die klassische MD5-Dateiprüfung, übrigens mit hinzugefügtem SHA1.

Wenn Sie etwas im Internet herunterladen, gibt der Autor den MD5-Wert an.

Seine Funktion besteht darin, dass wir nach dem Herunterladen der Software eine MD5-Prüfung der heruntergeladenen Datei durchführen können, um sicherzustellen, dass die Datei, die wir erhalten, dieselbe Datei ist wie die von der Website bereitgestellte Datei.

Sie benötigen also ein MD5-Verifizierungstool, also gehen Sie zu Baidu, um es zu finden, aber natürlich sind inländische Download-Sites ... vor den gebündelten Dingen kann man sich nur schwer schützen.

Also schreiben Sie als Programmierer einfach selbst eines.

Die Hauptvoraussetzung für die Analyse dieses Gadgets ist

1. Finden Sie die Datei gemäß dem Pfad

Holen Sie sich MD5

Holen Sie sich SHA1

Ein sehr einfaches kleines Tool,

Die erste Methode besteht darin, den Pfad direkt mit dem FileInfo-Klassenkonstruktor zu übergeben. Da Sie Dateien direkt auf die Konsole ziehen und ablegen können, ist dies sehr praktisch .

Es ist zu beachten, dass bei Leerzeichen im Pfad ein Fehler gemeldet wird.

Bei dieser Methode stellt s den Pfad der eingehenden Datei dar

static void GetFile(string s)
        {
            try
            {
                FileInfo fi = new FileInfo(s);
                Console.WriteLine("文件路径:{0}", s);
                Console.WriteLine("文件名称:{0}", fi.Name.ToString());
                Console.WriteLine("文件类型:{0}", fi.Extension.ToString());
                Console.WriteLine("文件大小:{0} K", fi.Length / 1024);
                Console.WriteLine("文件创建时间:{0}", fi.CreationTime.ToString());
                Console.WriteLine("上次访问时间:{0}", fi.LastAccessTime.ToString());
                Console.WriteLine("上次写入时间:{0}", fi.LastWriteTime.ToString());
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }
        }

Die zweite Methode erhält den MD5-Wert. Bei dieser Methode stellt s den Pfad der eingehenden Datei dar

MD5 Behandeln Sie die gesamte Datei als große Textnachricht und generieren Sie diesen einzigartigen MD5-Nachrichtenauszug durch seinen irreversiblen String-Transformationsalgorithmus.

static void GetMD5(string s)
        {
            try
            {
                FileStream file = new FileStream(s,FileMode.Open);
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] retval = md5.ComputeHash(file);
                file.Close();

                StringBuilder sc = new StringBuilder();
                for (int i = 0 ; i<retval.Length ; i++ )
                {
                    sc.Append(retval[i].ToString("x2"));
                }
                Console.WriteLine("文件MD5:{0}",sc);
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

Die dritte Methode besteht darin, den SHA1-Wert zu erhalten. Bei dieser Methode stellt s den eingehenden Dateipfad dar.

SHA1 wird als sicherer Hash-Algorithmus bezeichnet Bei einer Nachricht mit mehr als 2^64 Bit erzeugt SHA1 einen 160-Bit-Nachrichtenauszug.

SHA1 hat die folgenden Eigenschaften: Informationen können nicht aus dem Nachrichtenauszug wiederhergestellt werden. Zwei verschiedene Nachrichten erzeugen nicht den gleichen Nachrichtenauszug (aber es besteht eine Wahrscheinlichkeit von 1x10^48, dass derselbe Nachrichtenauszug erscheint, ignoriert). im allgemeinen Gebrauch).

static void GetSHA1(string s)
        {
            try
            {
                FileStream file = new FileStream(s, FileMode.Open);
                SHA1 sha1 = new SHA1CryptoServiceProvider();
                byte[] retval = sha1.ComputeHash(file);
                file.Close();

                StringBuilder sc = new StringBuilder();
                for (int i = 0; i < retval.Length; i++)
                {
                    sc.Append(retval[i].ToString("x2"));
                }
                Console.WriteLine("文件SHA1:{0}", sc);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie C# die Dateien MD5 und SHA1 erhält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn