SHA-3
提供: セキュリティ
スポンサーリンク
SHA-3 とは、暗号学的ハッシュ関数 Keccak を元にしています。SHA-2の次世代なハッシュ関数として公募されました。
読み方
- SHA-3
- しゃ すりー
- Keccak
- けちゃっく
概要
SHA-3は、SHA-2(SHA-224,SHA-256, SHA-384, SHA-512)の次世代のアルゴリズムとして公募されました。
Keccak は、スポンジ構造に基づくハッシュ関数(スポンジ関数)です。 SHA-3では、Keccak-f[1600]の撹拌関数を使用します。
SHA-3は、64ビットのワード長を用います。
スポンジ関数
古い設計のハッシュ関数は、以下の要素で構成されています。
- 入力圧縮関数
- 内部状態バッファ
- 撹拌関数(かくはんかんすう)
入力圧縮関数の役割は以下の通りです。
- 撹拌関数の呼び出し回数を減らす
- 前処理を行う。大きな入力ブロックを内部状態サイズ以下に不可逆にまとめる。
スポンジ関数では、「大きな内部状態 = スポンジ」を用いることで、複雑な圧縮関数を不要にします。
使い方
Python での使用例
FreeBSDにpkgコマンドでインストールする場合は、以下の通りです。
sudo pkg install py27-pysha3
pip コマンドでインストールする場合は、以下の通りです。
sudo pip install pysha3
- SHA3-n と Keccak-n では、 n = 224, 256, 384, 512 が出力ハッシュ長です。
- SHA-3は、パディングの前に2ビット列01がメッセージに追加されます。
- 出力は、16進数法です。
$ python Python 2.7.8 (default, Oct 2 2014, 23:44:28) [GCC 4.2.1 Compatible FreeBSD Clang 3.3 (tags/RELEASE_33/final 183502)] on freebsd10 Type "help", "copyright", "credits" or "license" for more information. >>> import hashlib >>> import sha3 >>> hashlib.sha3_256('Hello, sha3').hexdigest() '5be6f964fa568b10d11a96ac71db61147f9feff53660d5a4bdc25ccd9236f74b' >>> hashlib.sha3_384('Hello, sha3').hexdigest() '0f83cd7c6621c0c93e93e2297c6ecb32313456558c01b4610e324c8b21fd4979 235eda042e95d31b9a4da15aab137eb3' >>> hashlib.sha3_512('Hello, sha3').hexdigest() '7ffe017ccf8c75d4255ae3e1513f6c718edd51c0dcaaf908a1c3799b433801b9 bd0a110cc6bb58062e8f47428d3f9133fad8c15b30c51d016d1832664db2930d'
関連項目
ツイート
スポンサーリンク