Ada banyak implementasi JavaScript MD5 di luar sana. Apakah ada yang tahu yang mana yang paling canggih, paling diperbaiki bug dan tercepat?
Saya membutuhkannya untuk alat ini .
javascript
performance
md5
powtac
sumber
sumber
Jawaban:
Saya pernah mendengar implementasi Myers dari Joseph cukup cepat. Selain itu, ia memiliki artikel panjang tentang optimasi Javascript yang menjelaskan apa yang ia pelajari saat menulis implementasinya. Ini bacaan yang bagus untuk siapa saja yang tertarik dengan performansi javascript.
http://www.webreference.com/programming/javascript/jkm3/
Implementasi MD5-nya dapat ditemukan di sini
sumber
var add32
pada saluran 185 seharusnya hanyaadd32
jadi saya menemukan garpu terbaik yang saya bisa dan memperbaruinya ke versi baru ini: gist.github.com/MichaelPote/3f0cefaaa9578d7e30beSaya sarankan Anda menggunakan CryptoJS dalam kasus ini.
Pada dasarnya CryptoJS adalah kumpulan algoritma kriptografi standar dan aman yang berkembang yang diimplementasikan dalam JavaScript menggunakan praktik dan pola terbaik. Mereka cepat, dan mereka memiliki antarmuka yang konsisten dan sederhana.
Jadi jika Anda ingin menghitung hash MD5 dari kata sandi Anda, maka lakukan sebagai berikut:
Jadi skrip ini akan memposting hash dari kata sandi Anda ke server.
Untuk info lebih lanjut dan dukungan tentang algoritma penghitungan hash lainnya, Anda dapat mengunjungi:
http://code.google.com/p/crypto-js/
sumber
Sementara memilih pustaka juga penting untuk melihat apakah ia mendukung kerangka kerja modern seperti Bower, melewati jslint, mendukung model plugin untuk JQuery atau sistem modul seperti AMD / RequireJS selain berada dalam pengembangan aktif dan memiliki lebih dari 1 kontributor. Ada beberapa opsi yang memenuhi beberapa atau semua kriteria tambahan ini:
Contoh dari CryptoJS:
Ada perbandingan kinerja antara perpustakaan di atas di http://jsperf.com/md5-shootout/7 . Di mesin saya tes saat ini (yang memang sudah tua) menunjukkan bahwa jika Anda mencari kecepatan MD5 Spark adalah taruhan terbaik Anda (dan begitu juga kode JKM biasa). Namun jika Anda mencari perpustakaan yang lebih komprehensif maka CryptoJS adalah taruhan terbaik Anda meskipun 79% lebih lambat dari Spark MD5. Namun saya akan membayangkan CryptoJS akhirnya akan mencapai kecepatan yang sama karena ini adalah proyek yang sedikit lebih aktif.
sumber
sumber
Saya menemukan sejumlah artikel tentang hal ini. Mereka semua menyarankan penerapan Joseph Meyers.
lihat: http://jsperf.com/md5-shootout pada beberapa tes
dalam pencarian saya untuk kecepatan tertinggi saya melihat kode ini, dan saya melihat bahwa itu dapat ditingkatkan. Jadi saya membuat skrip JS baru berdasarkan kode Joseph Meyers.
lihat kode Jospeh Meyers yang disempurnakan
sumber
Saat ini implementasi md5 tercepat (berdasarkan kode Joseph Myers):
https://github.com/iReal/FastMD5
jsPerf comparaison: http://jsperf.com/md5-shootout/63
sumber
Saya hanya perlu mendukung browser HTML5 yang mendukung array yang diketik (DataView, ArrayBuffer, dll.) Saya pikir saya mengambil kode Joseph Myers dan memodifikasinya untuk mendukung passing dalam Uint8Array. Saya tidak menangkap semua peningkatan, dan mungkin masih ada beberapa artefak array char () yang dapat ditingkatkan. Saya membutuhkan ini untuk menambah proyek PouchDB.
sumber
txt = ''
sebenarnya dimaksud?Saya menulis tes untuk membandingkan beberapa implementasi hash JavaScript, termasuk sebagian besar implementasi MD5 yang disebutkan di sini. Untuk menjalankan tes, buka http://brillout.github.io/test-javascript-hash-implementations/ dan tunggu sebentar.
Tampaknya implementasi YaMD5 dari jawaban R. Hill adalah yang tercepat.
sumber
Itu mengganggu saya bahwa saya tidak dapat menemukan implementasi yang cepat dan mendukung string Unicode.
Jadi saya membuat satu yang mendukung string Unicode dan masih menunjukkan lebih cepat (pada saat penulisan) daripada implementasi ascii-only-strings tercepat saat ini:
https://github.com/gorhill/yamd5.js
Berdasarkan kode Joseph Myers, tetapi menggunakan TypedArrays, plus peningkatan lainnya.
sumber
Hanya untuk bersenang-senang,
yang ini panjangnya 42 baris, pas dalam 120 karakter secara horizontal, dan terlihat bagus. Apakah ini cepat? Yah - ini cukup cepat dan kira-kira sama dengan semua implementasi JS lainnya.
Saya hanya menginginkan sesuatu yang tidak terlihat jelek di file helpers.js saya dan tidak memperlambat SublimeText saya dengan min-liner sepanjang 20 mil yang diperkecil.
Jadi inilah md5 favorit saya.
Tapi sungguh, saya mempostingnya hanya karena pertimbangan estetika. Juga, dengan komentar itu persis 4000 byte. Tolong jangan tanya kenapa. Saya tidak dapat memberikan penjelasan yang tepat untuk perilaku OCD / pemberontak saya. Juga, terima kasih Paul Johnston, terima kasih Greg Holt. (Catatan: kalian menghilangkan beberapa kata kunci var jadi saya mengambil kebebasan untuk menambahkannya.)
sumber
Node.js memiliki dukungan bawaan
Cuplikan kode di atas menghitung string hex MD5 untuk string
hello world
Keuntungan dari solusi ini adalah Anda tidak perlu menginstal perpustakaan tambahan.
Saya pikir solusi bawaan harus menjadi yang tercepat. Jika tidak, kita harus membuat masalah / PR untuk proyek Node.js.
sumber
js-md5 mendukung string UTF-8, array, ArrayBuffer, AMD ....
dan cepat. jsperf
sumber
Mungkin paket ini bermanfaat
https://www.npmjs.com/package/pure-md5
sumber
Mengapa tidak mencoba http://phpjs.org/functions/md5/ ?
Sayangnya kinerjanya terbatas dengan skrip yang diemulasikan, namun ini dapat membuat hash md5 nyata. Meskipun saya akan menyarankan untuk tidak menggunakan md5 untuk kata sandi, karena ini adalah hash yang diberikan dengan cepat.
sumber
Hash lebih cepat harus dimungkinkan dengan menghitung pada kartu grafis (menerapkan algoritma hashing di WebGL), seperti yang dibahas di sana tentang SHA256: Apakah mungkin untuk menghitung hash sha256 di browser menggunakan kartu video pengguna, mis. dengan menggunakan WebGL atau Flash?
sumber
Anda juga dapat memeriksa implementasi md5 saya . Itu harus sekitar. sama dengan yang lain diposting di atas. Sayangnya, kinerja dibatasi oleh loop dalam yang tidak mungkin untuk mengoptimalkan lebih banyak.
sumber
Jika kinerja aplikasi Anda dibatasi oleh implementasi Javascript MD5, maka Anda benar-benar melakukan kesalahan. Pertimbangkan perubahan arsitektur (Petunjuk: gunakan MD5 lebih jarang)
sumber