トップ 一覧 検索 ヘルプ RSS ログイン

MD5.csの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category C#}}
オーバーロードされるスタティックメソッドGetMD5Valueを3つ持つクラス。
GetMD5Valueは引数をひとつ取り、文字列を返すスタティックメソッド。

* 文字列引数:その文字列が存在するファイルパスの場合、そのファイルのMD5値を返す。そうでなければ、その文字列自体のMD5を返す。
* バイト配列引数:GetMD5Value(strings s)から呼び出される。バイト配列のMD5値を返す。
* ファイルストリーム引数:GetMD5Value(strings s)から呼び出される。ファイルストリームのMD5値を返す。

いずれのメソッドも、エラーが発生したらエラーのToString()を返す。

 using System;
 using System.IO;
 using System.Security.Cryptography;
 using System.Text;
 
 public class MD5Hasher {
 
     public static string GetMD5Value(string target)  {
         string message;
         
         try {
             if (File.Exists(target)) {
                 using (FileStream fs = new FileStream(target, FileMode.Open, FileAccess.Read)) {
                     message = GetMD5Value(fs);
                 }
             } else {
                 message = GetMD5Value(Encoding.Default.GetBytes(target));
             }
         } catch(Exception e) {
             message = e.ToString();
         }
         
         return message;
     }
 
 
 
     public static string GetMD5Value(byte[] target) {
         byte[] hashedBytes = new byte[16];
 
         MD5 md5Hasher = MD5.Create();
         StringBuilder message = new StringBuilder();
 
         try {
             hashedBytes = md5Hasher.ComputeHash(target);
 
             for (int i=0; i<hashedBytes.Length; i++) {
                 message.Append(hashedBytes[i].ToString("X2"));
             }
 
         } catch(Exception e) {
             message.Remove(0, message.Length);
             message.Append(e.ToString());
         }
         return message.ToString();
     }
 
 
 
     public static string GetMD5Value(FileStream target) {
         byte[] hashedBytes = new byte[16];
 
         MD5 md5Hasher = MD5.Create();
         StringBuilder message = new StringBuilder();
 
         try {
             hashedBytes = md5Hasher.ComputeHash(target);
 
             for (int i=0; i<hashedBytes.Length; i++) {
                 message.Append(hashedBytes[i].ToString("X2"));
             }
 
         } catch(Exception e) {
             message.Remove(0, message.Length);
             message.Append(e.ToString());
         }
         return message.ToString();
     }
 }