C#では、MD5ハッシュ値を、System.Security.Cryptography.MD5クラスを使って計算できます。
実際の計算処理もComputeHashメソッドをコールするだけです。
public byte[] ComputeHash( byte[] buffer ) public byte[] ComputeHash( Stream inputStream ) public byte[] ComputeHash( byte[] buffer, int offset, int count ) |
ですがこのメソッドは、引数・戻り値がbyte配列やStreamになっており、
いまいち使い勝手がよくない場合も有ります。
という訳で、引数戻り値がstringとなる、ラッパーのメソッドを作成しました。
//-------------------------------------------------------------------- /// <summary> 指定された文字列をMD5でハッシュ化し、文字列として返す /// </summary> /// <param name="srcStr">入力文字列</param> /// <returns>入力文字列のMD5ハッシュ値</returns> //-------------------------------------------------------------------- private string calcMd5( string srcStr ) { System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); // md5ハッシュ値を求める byte[] srcBytes = System.Text.Encoding.UTF8.GetBytes(srcStr); byte[] destBytes = md5.ComputeHash(srcBytes); // 求めたmd5値を文字列に変換する System.Text.StringBuilder destStrBuilder; destStrBuilder = new System.Text.StringBuilder(); foreach (byte curByte in destBytes) { destStrBuilder.Append(curByte.ToString("x2")); } // 変換後の文字列を返す return destStrBuilder.ToString(); } |
上記のメソッドは、入力文字列をUTF8と見なしてハッシュ値計算します。
入力文字列の文字コードまで指定したい場合は、下記のメソッドを使用します。
//-------------------------------------------------------------------- /// <summary> 指定された文字列をMD5でハッシュ化し、文字列として返す /// </summary> /// <param name="srcStr">入力文字列</param> /// <param name="enc">入力エンコーディング</param> /// <returns>入力文字列のMD5ハッシュ値</returns> //-------------------------------------------------------------------- private string calcMd5( string srcStr, System.Text.Encoding enc ) { System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); // md5ハッシュ値を求める byte[] srcBytes = enc.GetBytes(srcStr); byte[] destBytes = md5.ComputeHash(srcBytes); // 求めたmd5値を文字列に変換する System.Text.StringBuilder destStrBuilder; destStrBuilder = new System.Text.StringBuilder(); foreach (byte curByte in destBytes) { destStrBuilder.Append(curByte.ToString("x2")); } // 変換後の文字列を返す return destStrBuilder.ToString(); } |
世界でもっとも強力な9のアルゴリズム
関連記事
コメントを残す