LoginSignup
1
3

More than 1 year has passed since last update.

Pythonでブロックチェーンの理解に重要なハッシュ値を出してみる。

Last updated at Posted at 2022-05-07

ブロックチェーンの理解のために

ブロックチェーンを勉強している際にアドレスという各自が暗号通貨を管理するための口座番号が出てきました。
アドレスの作成のためにハッシュ関数とハッシュ値を使っていることを知りました。

ハッシュ値の主な特徴として3つ挙げられます。

  1. 関数を通したあとのデータからは、もとのデータが何か分からない。
  2. どんなデータをハッシュ化しても、同じ長さのハッシュ値になる。
  3. 同じデータを何度ハッシュ化しても、常に同じハッシュ値になる。

ハッシュ値の上記の3つの特徴がブロックチェーンの改ざんが大変になる要因となっているようです。
詳しくはまた記事で紹介できたらと思います。
まずはPythonでハッシュ値の特徴が正しいのか確かめてみましょう。

実行環境

Google Colaboratoryを使用しました。

ライブラリ

hashlibというPythonのライブラリを使います。

コード

python hash1.py
# -*- coding: utf-8 -*-
import hashlib 

message = "りんご"

#ハッシュ値を求めた結果
a = hashlib.sha256(message.encode("utf-8")).hexdigest()
print(a)
len(a)

#出力結果
4261abfc91324dc5319312592125610a16b0b0a996fcdfae1d24766b918afae9
64

りんごが4261abfc91324dc5319312592125610a16b0b0a996fcdfae1d24766b918afae9というハッシュ値に変わりました。
関数を通したあとのデータからは、もとのデータが何か分からない。
という特徴があることが分かります。

python hash2.py
message2 ="りんごごりら"

#ハッシュ値を求めた結果
b = hashlib.sha256(message2.encode("utf-8")).hexdigest()
print(b)
len(b)
#出力結果
1cfe0892e70062529d32f8ee430871684235bcc0d29f0a0329ebc3d1e02d8aa5
64

ハッシュ値の長さは64文字です。
どんなデータをハッシュ化しても、同じ長さのハッシュ値になる。
という性質があることが分かりました。

python hash3.py
message3 ="りんご"

#ハッシュ値を求めた結果
c = hashlib.sha256(message3.encode("utf-8")).hexdigest()
print(c)
len(c)
a == c 

#出力結果
4261abfc91324dc5319312592125610a16b0b0a996fcdfae1d24766b918afae9
64
True

りんごをハッシュ化した場合同じハッシュ値になりました。
同じデータを何度ハッシュ化しても、常に同じハッシュ値になる。
という性質を満たすことが分かりました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3