フッターコンテンツにスキップ
PYTHONヘルプ

Hashlib Python(開発用のしくみ:ガイド)

Pythonのhashlibモジュールは、安全なハッシュアルゴリズムとメッセージダイジェストアルゴリズムを扱うための強力なツールです。 このモジュールは、多くのセキュアなハッシュアルゴリズムへの標準的なインタフェースを提供し、データの完全性とセキュリティを確保する必要がある開発者にとって、多目的な選択肢となります。 Later in the article, we will also look into a versatile PDF generation Library from IronSoftware called IronPDF and write a script using both libraries to demonstrate their usage.

hashlibモジュールはPythonの標準ライブラリの一部なので、別途インストールする必要はありません。 MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-3シリーズなど、さまざまな暗号ハッシュ関数が含まれています。 これらの関数は、ハッシュオブジェクトを作成するために使用され、その後、データのハッシュを生成するために使用することができます。

主な機能

1.幅広いアルゴリズムhashlib は、MD5 や SHA-1 のような古いものから、SHA-256 や SHA-3 のような最新のものまで、複数のハッシュアルゴリズムをサポートしています。 2.シンプルなインターフェース: 各ハッシュ・アルゴリズムには、ハッシュ・オブジェクトを返すコンストラクタ・メソッドがあります。 このオブジェクトは、update メソッドを使ってデータを供給し、digest または hexdigest メソッドを使ってハッシュ値を生成することができます。 3.セキュリティ:MD5 や SHA-1 のようなアルゴリズムには既知の脆弱性がありますが、 hashlib には SHA-256 や SHA-3 のようなより安全なオプションがあります。

インストール

hashlib は組み込みモジュールであり、明示的なインストールは必要ありません。

基本的な使用方法

以下は、hashlib を使用して、hashlib ハッシュコンストラクタを使用して SHA-256 ハッシュを生成する簡単な例です:

import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
PYTHON

高度な機能

  • マルチスレッドサポート:暗号化ハッシュ関数では、一度に 2047 バイト以上のデータが供給された場合、 hashlib はハッシュを計算している間にグローバル・インタープリタ・ロック (GIL) を解放します。
  • カスタムハッシュアルゴリズム: Pythonディストリビューションのhashlibが、追加アルゴリズムを提供するOpenSSLのビルドとリンクされている場合、new()メソッドでアクセスできます。

HashLibモジュールを使用したさまざまなタイプのハッシュ

1.シンプルなハッシング

hashlib Python ((How It Works: A Guide for Developers)):図1 - IronPDF for Python:PythonのPDFライブラリIronPDFの主な機能

Awesome Iron PDF with hashlib" content += "

Data for all the below examples = IronPDF from Iron Software is Awesome

" content += "

Simple hashing example

" # Simple hashing example data = b'IronPDF from Iron Software is Awesome' content += "

hashlib.sha256(data)

" hash_object = hashlib.sha256(data) hex_dig = hash_object.hexdigest() print("SHA-256 Hash:", hex_dig) content += "

SHA-256 Hash:"+str(hex_dig)+"

" content += "

Hashing with different digest sizes

" # Hashing with different digest sizes hash_md5 = hashlib.md5(data).hexdigest() content += "

hashlib.md5(data).hexdigest()

" hash_sha256 = hashlib.sha256(data).hexdigest() content += "

hashlib.sha256(data).hexdigest()

" hash_sha512 = hashlib.sha512(data).hexdigest() content += "

hashlib.sha512(data).hexdigest()

" print("MD5 Hash (hex):", hash_md5) print("SHA-256 Hash (hex):", hash_sha256) print("SHA-512 Hash (hex):", hash_sha512) content += "

MD5 Hash (hex):"+str(hash_md5)+"

" content += "

SHA-256 Hash (hex):"+str(hash_sha256)+"

" content += "

SHA-512 Hash (hex):"+str(hash_sha512)+"

" # Keyed hashing example content += "

Keyed hashing example

" h = blake2b(key=b'pseudorandom key', digest_size=16) content += "

" h.update(data) print(h.hexdigest()) content += "

Keyed Hash (hex):"+str(h.hexdigest())+"

" # Randomized hashing example content += "

Randomized hashing example

" salt = os.urandom(16) # Generate a random salt hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000) content += "

hashlib.pbkdf2_hmac('sha256', data, salt, 100000)

" hex_dig = hash_object.hex() print("Randomized Hash (SHA-256):", hex_dig) content += "

Randomized Hash (SHA-256):"+str(hex_dig)+"

" # Generate PDF using IronPDF renderer = ChromePdfRenderer() pdf = renderer.RenderHtmlAsPdf(content) # Export to a file or Stream pdf.SaveAs("Demo-hashlib.pdf") ``` ### コードの説明 提供されるコードでは、Pythonの`hashlib`ライブラリを使用したさまざまなハッシュ技術の使用法を紹介しています: 1.**単純なハッシングの例**:特定のデータ文字列(`b'IronPDF from Iron Software is Awesome'`)のSHA-256ハッシュを計算します。 2.**異なるダイジェストサイズによるハッシュ**: このセクションでは、正確なデータ文字列に対してMD5、SHA-256、SHA-512アルゴリズムを使用したハッシュを示します。 3.**キー付きハッシュの例**: この例では、`blake2b`ハッシュ関数と指定されたキー(`b'pseudorandom key'`)を使用して、データに対してキー付きハッシュを実行します。 4.**ランダム化ハッシングの例**:PBKDF2-HMACアルゴリズムとSHA-256を利用して、ランダムに生成されたソルトでランダム化ハッシュを生成します。 5.**PDF生成**:ハッシングの例をデモした後、コードはIronPDFを使ってPDFドキュメントを生成します。 各例は、標準ハッシュ、キー付きハッシュ、ランダム化ハッシュ技術など、暗号ハッシュのさまざまな側面を示しています。 ### アウトプット [hashlib Python ((How It Works: A Guide for Developers)):図2 - コンソール出力の例](/static-assets/pdf/blog/hashlib-python/hashlib-python-2.webp) ### PDFファイル [hashlib Python ((How It Works: A Guide for Developers)):図3 - IronPdfを使ったPDF出力例](/static-assets/pdf/blog/hashlib-python/hashlib-python-3.webp).

IronPdfライセンス

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。