Pythonでhashlibを用いてファイルをハッシュする

Pythonでhashlibを用いてファイルをハッシュしてみます。なお、ハッシュとは元のデータを不規則な文字列に置換することを言います。

今回はhashlibモジュールを用います。このライブラリ・モジュールは、Pythonの標準ライブラリですので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■ハッシュするファイルを用意する

hashlibを用いてファイルをハッシュしてみますが、その前にハッシュするファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「test.txt」というtxt形式のテキストファイルを用意しました。このファイルの中身は上記となります。

■hashlibを用いてファイルをハッシュする

ファイルの用意ができましたので、hashlibを用いてファイルをハッシュするスクリプトを書いていきます。

■コード

import hashlib

hasher = hashlib.md5()

with open(r'C:/Users/user_/test/test.txt','rb') as hash_file:
    r_hash = hash_file.read()
    hasher.update(r_hash)
    print(hasher.hexdigest())

importでhashlibモジュールを呼び出します。その後にhasherという変数を定義し、hashlib.md5()を用いて、MD5 (message-digest algorithm)ハッシュアルゴリズムをhasher変数に格納します。

格納後、with文とopen()関数を組み合わせます。括弧内には、引数,パラメータとして今回用意したファイルの名前と置かれている場所を渡します。これで開いたファイルをasを用いて、ファイルのオブジェクトがhash_fileという変数に格納。

さらに、r_hashという変数を定義し、hash_file変数をread()を用いて読み込み、読み込んだものを変数に格納。格納後、update()を用いて、MD5オブジェクトをbytes-like objectで更新します。この時に、括弧内に引数,パラメータとして、r_hash変数を渡します。

更新した後に、hexdigest()を用いて16進形式文字列を返します。返された文字列をprint()で出力します。

■実行・検証

このスクリプトを「file_hash.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、hashlibを用いてファイルをハッシュすることができ、置き換えられた不規則な文字列を出力させることができました。今回はテキストファイルのハッシュを行いましたが、テキストファイル以外にも、あらゆる種類のファイルをハッシュできます。

コメント

タイトルとURLをコピーしました