#42

ハッシュ値:データの指紋を作る

hashlibで作る指紋が、元を1文字変えるだけで激変する様子を確かめます。

解説

ハッシュ関数は、入力データを固定長の文字列(ハッシュ値)に変換します。同じ入力からは必ず同じ値が出ますが、入力がほんの少し違うだけで結果が大きく変わるのが特徴です。パスワード保存や改ざん検出、ファイルの同一性確認などに使われます。 ここでは hashlib の SHA-256 を使い、1文字だけ違う2つのデータの指紋を比べます。64文字のうち何文字が違うかを数え、激変する性質を体感します。

書き方

・import hashlib: ハッシュ関数のモジュールを読み込む。
・hashlib.sha256(text.encode("utf-8")): 文字列をバイト列に変換しSHA-256ハッシュを計算。
・.hexdigest(): ハッシュ値を16進数の文字列で取り出す。
・zip(ha, hb): 2つのハッシュ値を1文字ずつ組にする。
・sum(1 for x, y in zip(...) if x != y): 異なる文字数を数える。

書いて動かす

この回の課題

1文字だけ違う2つのデータのSHA-256ハッシュ値を比べ、何文字違うか数えて激変する性質を確かめてみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

自分のPCでも続けてみませんか

Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。