Apakah menghitung hash MD5 kurang intensif CPU daripada SHA-1 atau SHA-2 pada perangkat keras laptop x86 "standar"? Saya tertarik pada informasi umum, tidak khusus untuk chip tertentu.
UPDATE: Dalam kasus saya, saya tertarik untuk menghitung hash file. Jika ukuran file penting, anggap saja 300K.
Jawaban:
Ya, MD5 agak kurang intensif CPU. Di Intel x86 saya (Core2 Quad Q6600, 2,4 GHz, menggunakan satu inti), saya mendapatkan ini dalam mode 32-bit:
dan ini dalam mode 64-bit:
Angka dalam megabyte per detik, untuk pesan "panjang" (inilah yang Anda dapatkan untuk pesan yang lebih panjang dari 8 kB). Ini dengan sphlib , perpustakaan implementasi fungsi hash di C (dan Java). Semua penerapan berasal dari penulis yang sama (saya) dan dilakukan dengan upaya pengoptimalan yang sebanding; dengan demikian perbedaan kecepatan dapat dianggap benar-benar intrinsik dengan fungsi tersebut.
Sebagai perbandingan, pertimbangkan bahwa hard disk baru-baru ini akan berjalan pada kecepatan sekitar 100 MB / dtk, dan apa pun melalui USB akan mencapai di bawah 60 MB / dtk. Meskipun SHA-256 tampak "lambat" di sini, ini cukup cepat untuk sebagian besar tujuan.
Perhatikan bahwa OpenSSL menyertakan implementasi SHA-512 32-bit yang cukup lebih cepat dari kode saya (tetapi tidak secepat SHA-512 64-bit), karena implementasi OpenSSL sedang dalam perakitan dan menggunakan register SSE2, sesuatu yang tidak dapat dilakukan dalam C. SHA-512 adalah satu-satunya fungsi di antara empat yang mendapat manfaat dari implementasi SSE2.
Sunting: di halaman ini ( arsip ), orang dapat menemukan laporan kecepatan banyak fungsi hash (klik pada link "Telechargez maintenant"). Laporannya dalam bahasa Prancis, tetapi sebagian besar penuh dengan tabel dan angka, dan nomor internasional. Fungsi hash yang diimplementasikan tidak menyertakan kandidat SHA-3 (kecuali SHABAL) tetapi saya sedang mengerjakannya.
sumber
Di MacBook Air 2012 saya (Intel Core i5-3427U, 2x 1,8 GHz, 2,8 GHz Turbo), SHA-1 sedikit lebih cepat daripada MD5 (menggunakan OpenSSL dalam mode 64-bit):
Pembaruan: 10 bulan kemudian dengan OS X 10.9, SHA-1 menjadi lebih lambat di mesin yang sama:
Pembaruan kedua: Pada OS X 10.10, kecepatan SHA-1 kembali ke level 10.8:
Pembaruan ketiga: OS X 10.14 dengan LibreSSL jauh lebih cepat (masih di mesin yang sama). SHA-1 masih menjadi yang teratas:
sumber
Jawaban sebenarnya adalah: Tergantung
Ada beberapa faktor yang perlu dipertimbangkan, yang paling jelas adalah: cpu tempat Anda menjalankan algoritme ini dan implementasi algoritme.
Misalnya, saya dan teman saya sama-sama menjalankan versi openssl yang sama persis dan mendapatkan hasil yang sedikit berbeda dengan CPU Intel Core i7 yang berbeda.
Pengujian saya di tempat kerja dengan Intel (R) Core (TM) i7-2600 CPU @ 3.40GHz
Dan miliknya dengan Intel (R) Core (TM) i7 CPU 920 @ 2.67GHz
Kami berdua menjalankan binari yang sama persis dari OpenSSL 1.0.1j 15 Okt 2014 dari paket resmi ArchLinux.
Pendapat saya tentang ini adalah bahwa dengan keamanan tambahan sha1, desainer cpu lebih cenderung meningkatkan kecepatan sha1 dan lebih banyak programmer akan mengerjakan pengoptimalan algoritme daripada md5sum.
Saya kira md5 itu tidak akan lagi digunakan suatu hari nanti karena tampaknya md5 tidak memiliki keunggulan dibandingkan sha1. Saya juga menguji beberapa kasus pada file nyata dan hasilnya selalu sama di kedua kasus (kemungkinan dibatasi oleh disk I / O).
md5sum dari file besar 4,6GB membutuhkan waktu yang sama persis dengan sha1sum dari file yang sama, hal yang sama berlaku untuk banyak file kecil (488 dalam direktori yang sama). Saya menjalankan tes lusinan kali dan secara konsisten mendapatkan hasil yang sama.
-
Akan sangat menarik untuk menyelidiki hal ini lebih lanjut. Saya kira ada beberapa ahli yang bisa memberikan jawaban yang solid mengapa sha1 menjadi lebih cepat dari md5 pada prosesor yang lebih baru.
sumber
openssl speed
dilakukannya, yang merupakan tolok ukur pertama dan paling berarti.MD5 juga mendapat manfaat dari penggunaan SSE2, lihat BarsWF lalu beri tahu saya bahwa tidak. Yang diperlukan hanyalah sedikit pengetahuan assembler dan Anda dapat membuat sendiri rutinitas MD5 SSE2. Namun, untuk jumlah throughput yang besar, ada pertukaran kecepatan selama hashing dibandingkan dengan waktu yang dihabiskan untuk mengatur ulang data input agar kompatibel dengan instruksi SIMD yang digunakan.
sumber
sha1sum sedikit lebih cepat di Power9 daripada md5sum
sumber