- 1. 概要
- 2. ファイルのハッシュ値を取得
1. 概要
ドキュメントには、「セキュアハッシュとメッセージダイジェスト」と題されております。
本ページは、下記にサイトを参考にさせていただきました。
「hashlib --- セキュアハッシュとメッセージダイジェスト」
「Python - ファイルのハッシュ値を調べる」
「Pythonでハッシュ化を試してみる #Python」
2. ファイルのハッシュ値を取得
よく、オペレーティングシステムのインストーラをダウンロードします。
インストーラは、「.torrent」経由になることもありますが、たいてい「.iso」形式で取得します。
ダウンロード時に誤りがないか、ダウンロードした「.iso」のチェックサムの値が、提供されていることが多いです。
チェックサムの値を取得するのには。「7zip」を使用しているのですが、「EndeavourOS 2024.06.25」の値は、「sha512」で提供されておりました。
少なくとも、わたしの持っている「7zip」には、「sha512」は、用意されていないのです。
では、自分で計算するしかあるめぇと、探したら、「python」にこのモジュールが用意されておりました。
暗号化方式に合わせて、下記のメソッドが用意されています。
hashlib.md5([data, ]*, usedforsecurity=True)
hashlib.sha1([data, ]*, usedforsecurity=True)
hashlib.sha224([data, ]*, usedforsecurity=True)
hashlib.sha256([data, ]*, usedforsecurity=True)
hashlib.sha384([data, ]*, usedforsecurity=True)
hashlib.sha512([data, ]*, usedforsecurity=True)
hashlib.sha3_224([data, ]*, usedforsecurity=True)
hashlib.sha3_256([data, ]*, usedforsecurity=True)
hashlib.sha3_384([data, ]*, usedforsecurity=True)
hashlib.sha3_512([data, ]*, usedforsecurity=True)
今回、「sha512」を調べるために、下記のソースを作成しました。
import hashlib
import sys
filepath = sys.argv[1]
# ファイル を バイナリーモード で開く
with open(filepath, 'rb') as file:
# ファイルを読み取る
fileData = file.read()
# sha256
hash_sha512 = hashlib.sha512(fileData).hexdigest()
print('sha512 : ' + hash_sha512)
これを下記の要領で、実行します。
python パス/ソースファイル.py パス/チェック対象のファイル.iso
実行して、思い通りの結果を得ることができました。
|