LoginSignup
1
0

More than 1 year has passed since last update.

Ethereumのアドレス生成過程の理解のためにPythonでハッシュ関数keccak256を試す

Posted at

はじめに

仮想通貨のウォレットを持っていると、不規則な長い文字列をよく見ると思います。
Ethereumで使われるアドレスの生成過程について調べている中で、下記のような記述を見つかりました。

1.秘密鍵からECDSAで公開鍵(64バイト)を生成
2.公開鍵をハッシュ関数Keccak-256に通し文字列(32バイト)を得る
3.最初の12バイトを消し20バイトのアドレスになる
4.そのアドレスにprefixの0xを加えることで最終的なアドレスを得る(0x5eD8Cee6b63b1c6AFce3AD7c92f4fD7E1B8fAd9F)

参考:秘密鍵から公開鍵そしてアドレスが生成されるまでの流れ【仮想通貨】
keccak256がどのような関数なのか確かめるために触ってみました。

目次

  1. keccak256とは
  2. Pythonによるkeccak256によるハッシュ値の出力
  3. 参考文献

keccak256とは

keccak256はEthereumが用いる標準ハッシュ関数です。
読み方は(ケチャック)と読みます。
keccak256によるハッシュ化はpycryptodomeというライブラリを用いることで実装できるそうです。
https://pypi.org/project/pycryptodome/
今回はGoogle Colaboratoryでkeccak256によるハッシュ関数の出力を行いました。

Pythonによるkeccak256によるハッシュ値の出力

#ライブラリのインストール
!pip install pycryptodome
from Crypto.Hash import keccak
import binascii

keccak256 = keccak.new(data=b'hello', digest_bits=256).digest()
print("Keccak256:", binascii.hexlify(keccak256))

出力として下記のハッシュ値が出力されました。

Keccak256: b'1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8'

参考文献

1
0
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
0