SHA256とSHA512はどちらが速いか?
提供: セキュリティ
2017年8月12日 (土) 20:04時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「SHA-2には、ハッシュ長の異なるハッシュ関数が規格化されています。 '''SHA256''' と '''SHA512''' では、どちらのスピードが速...」)
スポンサーリンク
SHA-2には、ハッシュ長の異なるハッシュ関数が規格化されています。 SHA256 と SHA512 では、どちらのスピードが速いのかを比較します。
読み方
- SHA-2
- しゃ つー
概要
SHA-2には、 SHA256 や SHA512 といったハッシュ関数があります。ほかにもいくつかあります。
ここでは、SHA256とSHA512の速度を比較します。
OpenSSL のベンチマーク
OpenSSL コマンドには、speed オプションがあり、一定時間内にどれだけの暗号処理ができるかを測定できます。
OpenSSLコマンドで比較する
OpenSSL コマンドで、スピードを測ってみましょう。
$ openssl speed sha256 sha512 Doing sha256 for 3s on 16 size blocks: 10616942 sha256's in 3.00s Doing sha256 for 3s on 64 size blocks: 6040191 sha256's in 3.00s Doing sha256 for 3s on 256 size blocks: 2856380 sha256's in 3.00s Doing sha256 for 3s on 1024 size blocks: 898690 sha256's in 3.00s Doing sha256 for 3s on 8192 size blocks: 119033 sha256's in 3.00s Doing sha512 for 3s on 16 size blocks: 7426619 sha512's in 3.00s Doing sha512 for 3s on 64 size blocks: 7469050 sha512's in 2.99s Doing sha512 for 3s on 256 size blocks: 3299616 sha512's in 3.00s Doing sha512 for 3s on 1024 size blocks: 1211985 sha512's in 3.00s Doing sha512 for 3s on 8192 size blocks: 174250 sha512's in 3.00s OpenSSL 1.0.2g 1 Mar 2016 built on: reproducible build, date unspecified options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes sha256 56623.69k 128857.41k 243744.43k 306752.85k 325039.45k sha512 39608.63k 159872.64k 281567.23k 413690.88k 475818.67k
1秒あたりに処理できるバイト数はこちら。k だと数字が大きくてわかりにくいので、m にしてみました。四捨五入とか気にせず、切り捨てしてます。
type 16 64 256 1024 8192 bytes sha256 56m 128m 243m 306m 325m sha512 39m 159m 281m 413m 475m
サイズが大きくなるほど、スループットもあがっていくように見えます。大きいサイズのほうが sha512 が有利なようです。
1回あたりに費やされる時間を計算した例です。 秒だと値が小さすぎてわかりにくいので、ms(ミリ秒)で表記しています。
ブロックサイズ | 16 bytes | 64 bytes | 256 bytes | 1024 bytes | 8192 bytes |
---|---|---|---|---|---|
SHA256 | 2.83 ms | 4.97 ms | 10.50 ms | 33.38 ms | 252.03 ms |
SHA512 | 4.04 ms | 4.02 ms | 9.09 ms | 24.75 ms | 172.17 ms |
サイズが小さい間は、SHA256 のほうが速いようですが、 256バイト以降は、SHA512 のほうが速くなっています。
復数プロセスで実行した場合
復数プロセスで実行して計算する方法もあります。
$ openssl speed sha1 sha256 sha512 -multi 56
結果だけとるとこのような感じです。
sha1 1699842.77k 4971949.78k 11732319.57k 17669305.34k 20474765.31k sha256 1596971.09k 3604041.83k 6884032.63k 8792648.70k 9539130.71k sha512 1108558.58k 4427662.44k 7705484.80k 11714017.28k 13803763.03k
関連項目
ツイート
スポンサーリンク