PYTHON ヘルプ

hashlib Python(開発者向けガイド:仕組み)

公開済み 2025年2月19日
共有:

についてhashlibPythonのモジュールは、安全なハッシュとメッセージダイジェストアルゴリズムを扱うための強力なツールです。 このモジュールは、多くのセキュアハッシュアルゴリズムに標準的なインターフェースを提供し、データの整合性とセキュリティを確保する必要がある開発者にとって多用途の選択肢となります。 この記事の後半では、多目的なPDF生成ライブラリについても見ていきます。Iron Software呼ばれるIronPDFとそれらのライブラリを使用してその使用法を示すスクリプトを書いてください。

イントロダクション

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

主な機能

  1. 幅広いアルゴリズムhashlibMD5やSHA-1のような古いものから、SHA-256やSHA-3のようなより新しいものまで、複数のハッシュアルゴリズムをサポートしています。

  2. シンプルなインターフェース: 各ハッシュアルゴリズムには、ハッシュオブジェクトを返すコンストラクタメソッドがあります。 このオブジェクトは、updateメソッドを使用してデータを入力し、digestまたはhexdigestメソッドを使用してハッシュ値を生成できます。

  3. セキュリティ: MD5やSHA-1のようなアルゴリズムには既知の脆弱性がありますが、hashlibにはSHA-256やSHA-3のようなより安全なオプションが含まれています。

インストール

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

基本的な使用法

こちらは、使用方法の簡単な例ですhashlibhashlib ハッシュコンストラクタを使用して 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 IronSoftware is Awesome')
# Get the hexadecimal representation of the hash in  bytes object
hash_hex = hash_object.hexdigest() # hash_hex is digest object
print(hash_hex) # byte string
#Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
PYTHON

高度な機能

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

HashLibモジュールを使用したさまざまな種類のハッシュ化

シンプルハッシュ

import hashlib
# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
#output
SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
PYTHON

コードは入力データに対してSHA-256を生成します

2. 異なるダイジェストサイズを使用する

import hashlib
# Hashing with different digest sizes
data = b'Hello, World!' # convert to binary data
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
#output hash digest with only hexadecimal digits
MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
PYTHON

このコードは、渡されたデータを使用してmd5、sha256、およびsha512のハッシュを生成します。

3. キードハッシュ

import hashlib
from hashlib import blake2b
# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
#output
3d363ff7401e02026f4a4687d4863ced
PYTHON

4. ランダム化ハッシュ

import hashlib
import os
# Randomized hashing example (Salsa20)
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
#output
Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
PYTHON

これらの例は、異なるダイジェストサイズを使用した基本的なハッシュ化をカバーしています。 特定の要件や好みに応じて、異なるアルゴリズムやパラメータを使用するなどの調整を行うことができます。

実用的なアプリケーション

  1. データ完全性:ハッシュ関数は、記録の完全性を確認するために一般的に使用されます。 元のデータのハッシュと受信したデータのハッシュを比較することで、データが改ざんされていないことを確認できます。

  2. パスワードストレージ: ハッシュ関数は通常、パスワードを安全に保存するために使用されます。 システムは実際のパスワードの代わりにパスワードのハッシュを保存します。 ユーザーがログインすると、入力されたパスワードのハッシュが保存されているハッシュと比較されます。

  3. デジタル署名: ハッシュ関数は通常、メッセージの真正性と完全性を確認するためのデジタル署名を作成するのに使用されます。

IronPDFの紹介

hashlib Python((その仕組み:開発者のためのガイド)):図1 - IronPDF for Python: The Python PDF Library

IronPDFは、HTML、CSS、画像、JavaScriptを使用してPDFを作成、編集、および署名するための強力なPythonライブラリです。 それは、最小限のメモリ使用量で高性能な機能を提供します。 ユーザーはHTMLからPDFを生成する, マージ or 分割PDF文書、PDFからテキストと画像を抽出適用透かし, PDFを画像にラスタライズするJPEGやPNGのようなフォーマット、PDFファイルを暗号化するなど。 IronPDFは幅広いPDF操作を提供します。

IronPDFの主な機能

HTMLをPDFに変換

ユーザーはHTMLファイル、HTML文字列、およびURLをPDFに変換することができます。 例えば、こうだ、ウェブページをPDFにするIronPDFのChrome PDFレンダラーを使用する

クロスプラットフォームサポート

IronPDFはPython 3以上のバージョン用に設計されており、Windows、Mac、Linux、またはクラウドプラットフォーム上で動作します。

IronPDFは以下でもご利用いただけます。.NET, Java, Python、およびNode.js(ノード・ジェイエス).

編集と署名

ユーザーはプロパティを設定し、セキュリティを追加できますパスワードとパーミッション、およびデジタル署名を適用するIronPDFを使用してPDFに。

ページテンプレートと設定

IronPDFは、PDFドキュメントをカスタマイズできますヘッダー、フッター、ページ番号、余白の調整。 また、レスポンシブレイアウトやカスタム用紙サイズもサポートしています。

規格遵守

IronPDFパッケージは、PDF/AおよびPDF/UAなどのPDF標準にも準拠しています。 サポートしますUTF-8文字エンコーディングで、画像、CSS、フォントなどのアセットを扱う。

IronPDFおよびHashLibモジュールを使用してPDFドキュメントを生成

IronPDFの前提条件

  1. IronPDF.NET6.0を基盤技術としている。 したがって、次のことを確認してほしい。.NET 6.0ランタイムがインストールされています。

  2. Python 3.0+: Pythonバージョン3以降がインストールされている必要があります。

  3. Pip: PythonパッケージインストーラをインストールpipをクリックしてIronPDFパッケージをインストールしてください。

    まず、スクリプトを追加するためのPythonファイルを作成しましょう。この例では、Visual Studio Codeをコードエディターとして使用する。

    Visual Studio Codeを開き、ファイルhashlibDemo.pyを作成します。

    IronPDFライブラリをインストールする:

pip install ironpdf

次に、以下のコードを追加して、IronPDFおよびHashlib Pythonパッケージの使用法を示します。

import hashlib
import os
from hashlib import blake2b
from ironpdf import * 
# Apply your license key
License.LicenseKey = "your key"
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from IronSoftware is Awesome</p>"
content += "<h2> Simple hashing example</h2>"
content += "<p></p>"
# Simple hashing example
data = b'IronPDF from IronSoftware is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"
content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"
# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"
# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"
#Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
PYTHON

コードの説明

提供されたコードは、Pythonの`hashlib`ライブラリを使用したさまざまなハッシュ技術の使用例を示しています。

  1. シンプルハッシュの例: 特定のデータ文字列のSHA-256ハッシュを計算します(IronPDF from Iron Softwareは素晴らしい).

  2. 異なるダイジェストサイズでのハッシング: このセクションでは、正確なデータ文字列に対するMD5、SHA-256、SHA-512アルゴリズムを使用したハッシュ化を示します。3. キー付きハッシュの例: この例では、指定されたキーと共に`blake2b`ハッシュ関数を使用します(疑似ランダムキー)データに対して鍵付きハッシュを実行する。

  3. ランダム化ハッシュ例: PBKDF2-HMAC アルゴリズムを SHA-256 と共に利用して、ランダムに生成されたソルトを用いてランダム化ハッシュを生成します。5. PDF生成: ハッシュの例を示した後、コードは IronPDF を使用して PDF ドキュメントを生成し、ハッシュの例を示す HTML コンテンツを含みます。

    各例は、標準的なハッシュ、キー付きハッシュ、およびランダム化されたハッシュ技術など、暗号ハッシュのさまざまな側面を示しています。

出力

hashlib Python ((その仕組み:開発者へのガイド)):図2 - コンソール出力例

PDF

hashlib Python((作業方法:開発者向けガイド)):図3 - IronPDFを使用したPDF出力例

IronPDFライセンス

hashlib Python((動作の仕組み:開発者向けガイド)):図4 - IronPDFライセンスページ

IronPDFPythonのライセンスキーで動作します。 IronPDF for Pythonは購入前にその豊富な機能を試すことができる無料のトライアルライセンスキーを提供しています。

を使用する前に、ライセンス・キーをスクリプトの先頭に置きます。IronPDFパッケージ:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
PYTHON

結論

hashlibモジュールはPythonの標準ライブラリには不可欠であり、さまざまなアプリケーションに対して堅牢で安全なハッシュ関数を提供します。 データの整合性を確保したり、パスワードを安全に保存したり、デジタル署名を作成したりする場合、hashlib は必要なツールを提供します。 一方で、IronPDFは強力なPDF生成およびPDF操作ライブラリです。 これらのライブラリの両方を使用して、開発者はハッシュを迅速に生成してPDF形式で保存することができます。

Kannaopat Udonpant

カンナパット・ウドンパント

ソフトウェアエンジニア

 LinkedIn

ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
次へ >
XGBoost Python(仕組み: 開発者のためのガイド)