Magicode logo
Magicode
1

[実践]Pythonでハッシュ関数を実装しよう!〜公式ドキュメントを参考に〜

はじめに

今回はPythonでハッシュ関数を実装していこうと思います!

ハッシュ関数」とは、暗号について学んでいるとよく出てくる、「入力したデータを一見適当に見える値にして返す」関数です。

ハッシュ関数については以下の記事にわかりやすくまとめているので、ぜひ参考にしてください!

https://chaldene.net/hash

Pythonのドキュメントを参考に実装を進めていきます。

Pythonに限らず、プログラミング関係のドキュメントは非常に読みづらいです。

参考までに以下のPythonのドキュメントを見てみてください。

https://docs.python.org/ja/3/library/hashlib.html

どうでしょうか?

読むのみ抵抗があるくらい細かいですよね?

なのでこの記事ではドキュメントの重要な部分を抜き出してわかりやすく解説していきます!

ハッシュ関数を実装してみたい

Pythonのドキュメント読んだけど実装までできなかった

このような人のお役に立てれば幸いです。

前置きは早々に早速みていきましょう!

hashlib

Pythonでハッシュ関数を実装するには「hashlib」というモジュールをインポートする必要があります。

Pythonファイルを作成して、一番上に以下のコードを貼り付けてください。

これでインポートできました!

hashlibの基本的な使い方

まずは「hashlib」関数の基本的な使い方からみていきましょう。

基本

1つ1つ確認していきます。

まずはハッシュ関数に通す変数を2つ用意しています。

ここでは使用するハッシュアルゴリズムを指定しています。

今回は「sha256」というハッシュアルゴリズムを使用していきます。

ここでは文字列をバイト文字列に変換して先ほどのハッシュアルゴリズムに渡しています。

このようにすることでバイト文字列に変換できます。

ハッシュ関数に通すにはバイト文字列に変換する必要があるので忘れないようにしましょう。

ちなみに以下のような書き方でもバイト文字列に変換できます。

詳しく知りたい方は以下の本を読むか、自分で調べてみてください!

最後にハッシュ関数の出力を確認していきましょう。

digest()」とすると「ダイジェスト値」を出力してくれます。

ダイジェスト値 = ハッシュ関数により求められた値。

訳わからないですね。

以下のようにすると読みやすくなります。

読みやすくなったとはいえさっぱりわからない英数字が並んでいますね。

これがハッシュ値となります。

短く書く

コードが何行にも渡ってしまい少し長くなってしまいましたね。

実はもっと短く書く方法があるのでみていきましょう。

たった1行で済んでいますね。

こちらの方が使い勝手が良さそうですよね。

続き

これより先は以下の記事にまとめています。

https://chaldene.net/hash-python

より詳しくハッシュ関数について学ぶことができるので、興味がある方はぜひ! (もちろん無料です!)

Discussion

コメントにはログインが必要です。