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

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

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

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 を使用して 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 ディストリビューションのハッシュ ライブラリが追加のアルゴリズムを提供する OpenSSL のビルドにリンクされている場合は、new() メソッドを介してそれらにアクセスできます。

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

1. 単純なハッシュ化

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
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!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
PYTHON

提供されたデータを使用して、MD5、SHA-256、SHA-512のハッシュを生成します。

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
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

このコードはBlake2bアルゴリズムを使用してキー付きハッシュを作成する方法を示しています。

4. ランダム化ハッシュ化

import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
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
import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
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: Python PDFライブラリ

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

IronPDFの主な機能

HTMLからPDFへの変換

ユーザーはHTMLファイル、HTML文字列、URLをPDFに変換できます。 たとえば、IronPDFのChrome PDFレンダラーを使用してウェブページをPDFとしてレンダリングできます。

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

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

IronPDFは.NETJavaPythonNode.jsでも利用可能です。

編集と署名

ユーザーはプロパティを設定し、パスワードと権限 でセキュリティを追加し、デジタル署名を適用 してIronPDFを使用してPDFに対して各作業を行います。

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

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

標準準拠

IronPDFパッケージはまた、PDF/AやPDF/UAなどのPDF基準にも準拠しています。 UTF-8文字エンコーディングをサポートし、画像、CSS、フォントなどのアセットを処理します。

IronPDFとHashLibモジュールを使用してPDFドキュメントを生成する

IronPDF 必要条件

  1. IronPDF は .NET 6.0 を基礎技術として使用しています。 したがって、.NET 6.0ランタイムがお使いのシステムにインストールされていることを確認してください。
  2. Python 3.0+: Python のバージョン 3 以降がインストールされている必要があります。
  3. Pip: IronPDFパッケージをインストールするためにPythonパッケージインストーラーpipをインストールします。

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

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

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

 pip install ironpdf

次に、IronPDFとHashlib for 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 Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software 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")
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 Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software 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ハッシュを計算します (b'IronPDF from Iron Software is Awesome')。 2.異なるダイジェスト サイズを使用したハッシュ:このセクションでは、正確なデータ文字列に対して MD5、SHA-256、および SHA-512 アルゴリズムを使用してハッシュする方法を説明します。
  2. キー付きハッシュの例: この例では、指定されたキー(blake2bハッシュ関数を使用しています。 4.ランダム化ハッシュの例: PBKDF2-HMAC アルゴリズムと SHA-256 を使用して、ランダムに生成されたソルトを含むランダム化ハッシュを生成します。
  3. PDF 生成:ハッシュの例を示した後、コードはIronPDFを使用して、ハッシュの例を示す HTML コンテンツを含む PDF ドキュメントを生成します。

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

出力

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

PDF

hashlib Python ((動作の仕組み:開発者向けガイド)): 図3 - IronPDFを使用したPDF出力の例

IronPDFライセンス

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

IronPDFはPythonライセンスキーで動作します。 IronPDF for Pythonは、購入前にその広範な機能をテストできる無料の試用ライセンスキーを提供しています。

スクリプトを開始する前に、IronPDFパッケージを使用する前にライセンスキーを配置します。

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

結論

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

カーティス・チャウ
テクニカルライター

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me