最初にプログラミングを学び始めたとき、私はいつも自分でいくつかの小さなソフトウェア ガジェットを書くことを考えていました。
そして、これは古典的なファイルの MD5 検証であり、ちなみに SHA1 が追加されています。
インターネット上で何かをダウンロードするとき、作成者は MD5 値を提供します。
その機能は、ソフトウェアをダウンロードした後、ダウンロードしたファイルに対して MD5 チェックを実行して、取得したファイルがサイトによって提供されたファイルと同じファイルであることを確認できることです。
それでMD5検証ツールが必要なのでBaiduに行って探しますが、国内のダウンロードサイトは言うまでもなく…バンドルされているものはガードが難しいです。
それでは、プログラマーとして、自分で書いてみましょう。
このガジェットを分析するための主な要件は次のとおりです
1. パスに従ってファイルを見つけます
2. MD5 を取得します
非常に単純なガジェットです。最初のメソッドは FileInfo クラスを直接使用します。構造 関数へのパスを渡すだけで、ファイルをコンソールに直接ドラッグ アンド ドロップできるため、非常に便利です。
パスにスペースが含まれる場合、エラーが報告されることに注意してください。
このメソッドでは、s は受信ファイルのパスを表します
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); } }
2 番目のメソッドでは、MD5 値を取得します。このメソッドでは、s は受信ファイルのパスを表します
MD5 は、ファイル全体を大きなテキスト メッセージとして扱い、その不可逆性を通じて処理します。文字列変換アルゴリズムにより、この固有の MD5 メッセージ ダイジェストが生成されます。
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); } }
3 番目の方法は、SHA1 値を取得することです。この方法では、s は受信ファイル パスを表します。
SHA1 は、長さが 2^64 ビット未満のメッセージに対して、 160 ビットのメッセージ。
SHA1 には次の特性があります: メッセージ ダイジェストから情報を復元することはできません; 2 つの異なるメッセージは同じメッセージ ダイジェストを生成しません (ただし、通常は無視して使用すると、1x10^48 の確率で同じメッセージ ダイジェストが生成されます)。
りー以上がC# がファイル MD5 と SHA1 を取得する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。