[C#]文字列をMD5ハッシュ化し,文字列として返すメソッド

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のアルゴリズム

関連記事

コメントを残す

メールアドレスが公開されることはありません。