今日はSolidityで使えるハッシュ関数である「Keccak256」について解説します。
Keccak256関数とは?
Ethereumで使われるハッシュ関数です。
Keccak256はSHA-3選定として、他でも使われているハッシュ関数です。
ただし、Ethereumの場合、オリジナルのKeccak256が利用されているため標準のアルゴリズムとは異なる点があるので注意が必要です。
サンプルソース
また、Ethereumのアドレスを作る際にもこのハッシュ関数が使われています。
ブロックチェーンでは公開鍵暗号というものが使われていて、公開鍵をハッシュ化した値がEthereumアドレスとなります。
- 公開鍵をKeccak256関数を使ってハッシュ化
- 後ろの20バイトを抜き出し(アドレスには後ろの20バイトのみ必要)
- 16進数を表すため、プレフィックス(0x)を頭に付与する
この手順でEthereumアドレスを作成することが可能です。
補足:Solidityの文字列比較について
Solidityでは、stringという文字列の型を使用するのですが、他の言語のStringと違って、文字列の比較ができません。
そのため、一度、Keccak256関数を使って文字列をbytes32型にし、その値を比較する必要があります。
この点は他の言語と大きく異なるので、文字列比較の際は注意してください。