2010-09-13T22:49:36の更新内容

programming/tips/md5_base64/index.wiki.txt

current previous
26,7 26,6
 
      // もとめたハッシュ値をBASE64に変換する
      // もとめたハッシュ値をBASE64に変換する
 
      var md5hash_base64 = Convert.ToBase64String(md5hash);
      var md5hash_base64 = Convert.ToBase64String(md5hash);
 

        

        
+
      // 出力結果: MpQ15eZr6AmmVq8QX0JAHg==
 
      Console.WriteLine(md5hash_base64);
      Console.WriteLine(md5hash_base64);
 
    }
    }
 
  }
  }
48,7 47,6
 
      ' もとめたハッシュ値をBASE64に変換する
      ' もとめたハッシュ値をBASE64に変換する
 
      Dim md5hash_base64 As String = Convert.ToBase64String(md5hash)
      Dim md5hash_base64 As String = Convert.ToBase64String(md5hash)
 

        

        
+
      ' 出力結果: MpQ15eZr6AmmVq8QX0JAHg==
 
      Console.WriteLine(md5hash_base64)
      Console.WriteLine(md5hash_base64)
 
    End Using
    End Using
 
  End Sub
  End Sub
122,7 120,6
 
      // もとめたハッシュ値をBASE64に変換する
      // もとめたハッシュ値をBASE64に変換する
 
      var sha256hash_base64 = Convert.ToBase64String(sha256hash);
      var sha256hash_base64 = Convert.ToBase64String(sha256hash);
 

        

        
+
      // 出力結果: THFtTPIRx7fS8yM8lBdxrQUH6lus+TtJJ2aqQa6fcg0=
 
      Console.WriteLine(sha256hash_base64);
      Console.WriteLine(sha256hash_base64);
 
    }
    }
 
  }
  }
144,7 141,6
 
      ' もとめたハッシュ値をBASE64に変換する
      ' もとめたハッシュ値をBASE64に変換する
 
      Dim sha256hash_base64 As String = Convert.ToBase64String(sha256hash)
      Dim sha256hash_base64 As String = Convert.ToBase64String(sha256hash)
 

        

        
+
      ' 出力結果: THFtTPIRx7fS8yM8lBdxrQUH6lus+TtJJ2aqQa6fcg0=
 
      Console.WriteLine(sha256hash_base64)
      Console.WriteLine(sha256hash_base64)
 
    End Using
    End Using
 
  End Sub
  End Sub
152,100 148,6
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
+
md5sumコマンドのようにBASE64ではなく16進値で取得したい場合は、Convert.ToBase64String()メソッドの代わりに&msdn(netfx,method,System.BitConverter.ToString){BitConverter.ToString()メソッド};を使う。 ただし、BitConverter.ToString()メソッドはバイト毎にハイフンを挟み、大文字形式で文字列化するので、md5sumコマンドの結果と同じにしたい場合はハイフンを取り除き、大文字を小文字に必要がある。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+
using System.Security.Cryptography;
+
using System.Text;
+

          
+
class Sample {
+
  public static void Main()
+
  {
+
    var source = "hogehoge";
+

          
+
    using (var md5 = MD5.Create()) {
+
      // MD5ハッシュ値を求める
+
      var md5hash = md5.ComputeHash(Encoding.UTF8.GetBytes(source));
+
      // もとめたハッシュ値を16進形式に変換したあと、ハイフンを取り除き、小文字にする
+
      var md5sum = BitConverter.ToString(md5hash).Replace("-", string.Empty).ToLowerInvariant();
+

          
+
      // 出力結果: 329435e5e66be809a656af105f42401e
+
      Console.WriteLine(md5sum);
+
    }
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+
Imports System.Security.Cryptography
+
Imports System.Text
+

          
+
Class Sample
+
  Public Shared Sub Main()
+
    Dim source As String = "hogehoge"
+

          
+
    Using md5 As MD5 = MD5.Create()
+
      ' MD5ハッシュ値を求める
+
      Dim md5hash As Byte() = md5.ComputeHash(Encoding.UTF8.GetBytes(source))
+
      ' もとめたハッシュ値を16進形式に変換したあと、ハイフンを取り除き、小文字にする
+
      Dim md5sum As String = BitConverter.ToString(md5hash).Replace("-", String.Empty).ToLowerInvariant()
+

          
+
      ' 出力結果: 329435e5e66be809a656af105f42401e
+
      Console.WriteLine(md5sum)
+
    End Using
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
参考までに、md5sumコマンドを使った場合の結果は以下のとおり。
+
#prompt{{
+
$ echo -n "hogehoge" | md5sum -
+
329435e5e66be809a656af105f42401e  -
+
}}
+

          
+
**MD5クラスを使ってmd5sumコマンドを実装する
+
MD5クラスを使ってmd5sumコマンドと同じ結果を出力するプログラムを作る。
+
#code(cs,md5sum.cs){{
+
using System;
+
using System.IO;
+
using System.Security.Cryptography;
+

          
+
class MD5Sum {
+
  public static void Main(string[] args)
+
  {
+
    using (var md5 = MD5.Create()) {
+
      foreach (var file in args) {
+
        using (var stream = (file == "-") ? Console.OpenStandardInput() : File.OpenRead(file)) {
+
          Console.WriteLine("{0}  {1}",
+
                            BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty).ToLowerInvariant(),
+
                            file);
+
        }
+

          
+
        md5.Initialize();
+
      }
+
    }
+
  }
+
}
+
}}
+

          
+
#prompt(実行結果){{
+
$ gmcs md5sum.cs
+
$ echo -n "hogehoge" | mono md5sum.exe ./md5sum.cs - ./md5sum.exe -
+
18c7d2fb4856b998a619ce9e9784bca0  ./md5sum.cs
+
329435e5e66be809a656af105f42401e  -
+
7fb4bb0cbeccc7b401237d238d92549d  ./md5sum.exe
+
d41d8cd98f00b204e9800998ecf8427e  -
+
$ echo -n "hogehoge" | md5sum ./md5sum.cs - ./md5sum.exe -
+
18c7d2fb4856b998a619ce9e9784bca0  ./md5sum.cs
+
329435e5e66be809a656af105f42401e  -
+
7fb4bb0cbeccc7b401237d238d92549d  ./md5sum.exe
+
d41d8cd98f00b204e9800998ecf8427e  -
+
}}
+

          
 
*Perl
*Perl
 
#code(pl){{
#code(pl){{
 
use Digest::MD5 qw(md5_base64);
use Digest::MD5 qw(md5_base64);