Python Language
ハッシュライブラリ
サーチ…
前書き
hashlibは、多くの異なる安全なハッシュアルゴリズムとメッセージダイジェストアルゴリズムに共通のインタフェースを実装します。 FIPSセキュアハッシュアルゴリズムSHA1、SHA224、SHA256、SHA384、およびSHA512が含まれています。
文字列のMD5ハッシュ
このモジュールは、多くの異なる安全なハッシュアルゴリズムとメッセージダイジェストアルゴリズムに共通のインタフェースを実装します。 FIPSセキュアハッシュアルゴリズムSHA1、SHA224、SHA256、SHA384、およびSHA512(FIPS 180-2で定義)とRSAのMD5アルゴリズム(インターネットRFC 1321で定義)が含まれています。
それぞれのタイプのハッシュに名前が付けられたコンストラクタメソッドが1つあります。すべて同じ単純なインタフェースを持つハッシュオブジェクトを返します。たとえば、 sha1()
を使用してSHA1ハッシュオブジェクトを作成します。
hash.sha1()
このモジュールに常に存在するハッシュアルゴリズムのコンストラクターは、 md5()
、 sha1()
、 sha224()
、 sha256()
、 sha384()
、およびsha512()
です。
update()
メソッドを使用して、このオブジェクトに任意の文字列を入力できるようになりました。いつでも、 digest()
hexdigest()
メソッドまたはhexdigest()
メソッドを使用して、それまでに入力された文字列の連結のダイジェストを要求することができます。
hash.update(arg)
ハッシュオブジェクトを文字列argで更新します。繰り返し呼び出しは、すべての引数を連結した単一呼び出しと同等です。m.update(a); mupdate(b)はmupdate(a + b)に相当する。
hash.digest()
これまでにupdate()メソッドに渡された文字列のダイジェストを返します。これは、nullバイトを含む非ASCII文字を含むdigest_sizeバイトの文字列です。
hash.hexdigest()
digest()と同じように、ダイジェストは2桁の長さの文字列として返され、16進数のみが含まれます。これは、電子メールや他の非バイナリ環境で値を安全に交換するために使用されます。
次に例を示します。
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
>>> m.digest_size
16
>>> m.block_size
64
または:
hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
OpenSSLによって提供されるアルゴリズム
目的のアルゴリズムの文字列名を最初のパラメータとして取るジェネリックnew()
コンストラクタも存在し、上記のハッシュやOpenSSLライブラリが提供する他のアルゴリズムにアクセスすることができます。名前付きコンストラクタはnew()
よりもはるかに高速であり、優先されるべきです。
OpenSSLによって提供されるアルゴリズムでnew()
を使用する:
>>> h = hashlib.new('ripemd160')
>>> h.update("Nobody inspects the spammish repetition")
>>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'