Существует множество реализаций JavaScript MD5. Кто-нибудь знает, какой из них самый продвинутый, самый исправленный и самый быстрый?
Мне это нужно для этого инструмента.
javascript
performance
md5
powtac
источник
источник
Ответы:
Я слышал, что реализация Джозефа Майерса довольно быстрая. Кроме того, у него есть длинная статья по оптимизации Javascript, описывающая то, что он узнал во время написания своей реализации. Это хорошее чтение для всех, кто интересуется производительным javascript.
http://www.webreference.com/programming/javascript/jkm3/
Его реализацию MD5 можно найти здесь
источник
var add32
строка 185 должна быть именноadd32
такой, чтобы я нашел лучший форк и смог обновить ее до этой новой версии: gist.github.com/MichaelPote/3f0cefaaa9578d7e30beЯ бы предложил вам использовать CryptoJS в этом случае.
По сути, CryptoJS - это растущая коллекция стандартных и безопасных криптографических алгоритмов, реализованных в JavaScript с использованием передовых методов и шаблонов. Они быстрые и имеют простой и понятный интерфейс.
Поэтому, если вы хотите вычислить MD5-хеш вашей строки пароля, сделайте следующее:
Таким образом, этот скрипт отправит хеш вашей строки пароля на сервер.
Для получения дополнительной информации и поддержки других алгоритмов вычисления хеша вы можете посетить:
http://code.google.com/p/crypto-js/
источник
При выборе библиотеки также важно выяснить, поддерживает ли она современные фреймворки, такие как Bower, передает jslint, поддерживает модель плагинов для JQuery или модульные системы, такие как AMD / RequireJS, в дополнение к активной разработке и имеет более 1 участника. Есть несколько вариантов, которые удовлетворяют некоторым или всем этим дополнительным критериям:
Пример из CryptoJS:
Сравнение производительности между вышеуказанными библиотеками можно найти по адресу http://jsperf.com/md5-shootout/7 . На моей машине текущие тесты (которые, по общему признанию, старые) показывают, что если вы ищете скорость, то лучшим выбором будет Spark MD5 (как и простой код JKM). Однако, если вы ищете более полную библиотеку, то CryptoJS - ваш лучший выбор, хотя он на 79% медленнее, чем Spark MD5. Однако я думаю, что CryptoJS в конечном итоге достигнет той же скорости, что и более активный проект.
источник
источник
Я нашел много статей на эту тему. Все они предложили реализацию Джозефа Мейерса.
см: http://jsperf.com/md5-shootout по некоторым тестам
В моем стремлении к максимальной скорости я посмотрел на этот код и увидел, что его можно улучшить. Поэтому я создал новый JS-скрипт на основе кода Джозефа Мейерса.
см. улучшенный код Jospeh Meyers
источник
На данный момент самая быстрая реализация md5 (на основе кода Джозефа Майерса):
https://github.com/iReal/FastMD5
Сравнение jsPerf: http://jsperf.com/md5-shootout/63
источник
Мне нужно только поддерживать браузеры HTML5, которые поддерживают типизированные массивы (DataView, ArrayBuffer и т. Д.). Мне кажется, я взял код Джозефа Майерса и изменил его для поддержки передачи в Uint8Array. Я не уловил всех улучшений, и все еще есть некоторые артефакты массива char (), которые можно улучшить. Мне это нужно для добавления в проект PouchDB.
источник
txt = ''
самом деле означает?Я написал тесты для сравнения нескольких реализаций хеша JavaScript, включая большинство реализаций MD5, упомянутых здесь. Чтобы запустить тесты, перейдите на http://brillout.github.io/test-javascript-hash-implementations/ и немного подождите.
Похоже, что реализация R.M Hill's в YaMD5 - самая быстрая.
источник
Меня беспокоило, что я не смог найти реализацию, которая быстрая и поддерживала строки Unicode.
Таким образом, я создал тот, который поддерживает строки Unicode и все еще показывает как быстрее (на момент написания), чем самые быстрые в настоящее время реализации ascii-only-strings:
https://github.com/gorhill/yamd5.js
Основано на коде Джозефа Майерса, но использует TypedArrays, а также другие улучшения.
источник
Просто для удовольствия,
длина этой строки составляет 42 строки, она вмещает 120 символов по горизонтали и выглядит хорошо. Это быстро? Что ж, это достаточно быстро и примерно так же, как и все другие реализации JS.
Я просто хотел что-то, что не выглядит безобразно в моем файле helpers.js и не замедляет мой SublimeText с миниатюрными однострочниками длиной 20 миль.
Так вот мой любимый мд5.
Но на самом деле я разместил это просто из эстетических соображений. Также с комментариями это ровно 4000 байтов. Пожалуйста, не спрашивайте почему. Я не могу придумать правильное объяснение моего поведения ОКР / повстанцев. Также спасибо Пол Джонстон, спасибо Грег Холт. (Примечание: вы, ребята, пропустили несколько ключевых слов var, поэтому я позволил себе добавить их.)
источник
Node.js имеет встроенную поддержку
Приведенный выше фрагмент кода вычисляет шестнадцатеричную строку MD5 для строки
hello world
Преимущество этого решения в том, что вам не нужно устанавливать дополнительную библиотеку.
Я думаю, что встроенное решение должно быть самым быстрым. Если нет, мы должны создать проблему / PR для проекта Node.js.
источник
JS-MD5 поддерживает строку UTF-8, массив, ArrayBuffer, AMD ....
и быстро. JSPerf
источник
Может быть, этот пакет был полезен
https://www.npmjs.com/package/pure-md5
источник
Почему бы не попробовать http://phpjs.org/functions/md5/ ?
К сожалению, производительность ограничена любым эмулируемым скриптом, однако это может сделать реальный хэш md5. Хотя я бы посоветовал не использовать md5 для паролей, так как это быстрый рендеринг хеша.
источник
Гораздо более быстрое хеширование должно быть возможно путем вычисления на графической карте (реализуйте алгоритм хеширования в WebGL), как обсуждалось там о SHA256: возможно ли вычислять хеши sha256 в браузере, используя видеокарту пользователя, например. с помощью WebGL или Flash?
источник
Вы также можете проверить мою реализацию md5 . Это должно быть ок. так же, как и другие, опубликованные выше. К сожалению, производительность ограничена внутренним циклом, который невозможно оптимизировать больше.
источник
Если производительность вашего приложения ограничена реализацией Javascript MD5, то вы действительно делаете что-то не так. Рассмотрим архитектурные изменения (подсказка: используйте MD5 реже)
источник