« [ windows ] 役に立たない&いらない情報バー | トップページ | [ programming ] naming »

2007/02/05

[ ironpython / python ] ironpython で MD5 ハッシュ値を算出する

CPython の標準ライブラリのひとつ MD5 モジュールは IronPython では、そのままではインポートすることができません。その理由はこのへんにあるように C 拡張を利用しているからですが、MD5 が利用できないといろいろ不便です。

こちらには md5 モジュールを C# で作った方がいらっしゃいますが、ただ単にフィンガープリントを出力するだけとか、'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9' という形式ではなくて見慣れた形式のほうがいい場合もあると思って、ものすごく単純な関数を作ってみました。

import clr
clr.AddReference( "System" )

import System
from System.Security.Cryptography import MD5

def calculate_md5( hoge ):
	# Because CPython's MD5 module cannot be used.
	# Thus, to get a fingerprint, you must use .NET Framework Class Library module 
	# "System.Security.Cryptography.MD5"
	insMD5 = MD5.Create()
	return ''.join( [("%x" % fragment) for fragment in \
		insMD5.ComputeHash( System.Text.Encoding.Default.GetBytes( hoge ) )] )

やっていることは単純で MD5 クラスのインスタンスを作って、そのメソッドを呼び出して MD5 を計算します ( insMD5.ComputeHash() )。この戻り値は BytesArray 型のオブジェクトです。これをリスト内包式で "ea703e7aa1efda064eaa57d9e8ab7e" のようなよく見る形式に変換しています。変換前がいいという場合はリスト内包式を解除して insMD5.ComputeHash() だけの式にしてください。

|

« [ windows ] 役に立たない&いらない情報バー | トップページ | [ programming ] naming »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/103108/13798518

この記事へのトラックバック一覧です: [ ironpython / python ] ironpython で MD5 ハッシュ値を算出する:

« [ windows ] 役に立たない&いらない情報バー | トップページ | [ programming ] naming »