暗号化パッケージのベンチマーク
データをハッシュ化して、同一性の確認のためだけに使う目的で暗号化パッケージを使うことになり、パスワードや個人情報などとは違い。解読されても問題がなく、単純に早さだけを知りたかったので、色々な暗号化パッケージでスピードテストをしてみました。
暗号形式
- scrypt
- bcrypt
- sha256
- sha512
- sha3-256s
- Ripemd
- MD5
結論
MD5とsha256が安定して速い。
ただ、MD5は脆弱性が発見されて、推奨されていない暗号形式なので、解読されるとまずいデータには使わない方がいいです。
APOPのぜい弱性で見えてきたMD5の「ご臨終」
テスト結果
ベンチマークのコードを一応貼っておきます。
tikasan/encryptionBenchmark
1st time
- scrypt: 73.621115ms
- bcrypt: 52.998518ms
- sha256: 3.253µs
- sha512: 4.276µs
- sha3-256: 5.999µs
- Ripemd: 5.323µs
- MD5: 2.669µs
2nd time
- scrypt: 74.315378ms
- bcrypt: 51.524798ms
- sha256: 2.514µs
- sha512: 2.339µs
- sha3-256: 7.625µs
- Ripemd: 9.218µs
- MD5: 2.625µs
3rd time
- scrypt: 79.316009ms
- bcrypt: 50.530978ms
- sha256: 2.305µs
- sha512: 3.291µs
- sha3-256: 8.048µs
- Ripemd: 4.314µs
- MD5: 3.104µs
4th time
- scrypt: 73.314786ms
- bcrypt: 49.949264ms
- sha256: 2.296µs
- sha512: 3.083µs
- sha3-256: 7.453µs
- Ripemd: 8.307µs
- MD5: 1.775µs
5th time
- scrypt: 77.01785ms
- bcrypt: 50.199802ms
- sha256: 3.272µs
- sha512: 3.321µs
- sha3-256: 6.446µs
- Ripemd: 3.99µs
- MD5: 2.759µs