解説
ハッシュ関数は、入力データを固定長の文字列(ハッシュ値)に変換します。同じ入力からは必ず同じ値が出ますが、入力がほんの少し違うだけで結果が大きく変わるのが特徴です。パスワード保存や改ざん検出、ファイルの同一性確認などに使われます。
ここでは 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本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。