Il existe de nombreuses implémentations JavaScript MD5. Quelqu'un sait-il lequel est le plus avancé, le plus corrigé et le plus rapide?
J'en ai besoin pour cet outil.
javascript
performance
md5
powtac
la source
la source
Réponses:
J'ai entendu que la mise en œuvre de Joseph Myers est assez rapide. De plus, il a un long article sur l'optimisation Javascript décrivant ce qu'il a appris lors de l'écriture de son implémentation. C'est une bonne lecture pour quiconque s'intéresse au javascript performant.
http://www.webreference.com/programming/javascript/jkm3/
Son implémentation MD5 peut être trouvée ici
la source
var add32
ligne 185 devrait être justeadd32
pour que je trouve la meilleure fourche possible et que je la mette àJe vous suggère d'utiliser CryptoJS dans ce cas.
Fondamentalement, CryptoJS est une collection croissante d'algorithmes cryptographiques standard et sécurisés implémentés en JavaScript en utilisant les meilleures pratiques et modèles. Ils sont rapides et ont une interface cohérente et simple.
Donc, si vous souhaitez calculer le hachage MD5 de votre chaîne de mot de passe, procédez comme suit:
Ce script affichera donc le hachage de votre chaîne de mot de passe sur le serveur.
Pour plus d'informations et d'assistance sur d'autres algorithmes de calcul de hachage, vous pouvez visiter:
http://code.google.com/p/crypto-js/
la source
Lors de la sélection de la bibliothèque, il est également important de voir si elle prend en charge les cadres modernes tels que Bower, passe jslint, prend en charge le modèle de plug-in pour JQuery ou les systèmes de modules tels que AMD / RequireJS en plus d'être en développement actif et d'avoir plus de 1 contributeurs. Il existe quelques options qui satisfont à certains ou à tous ces critères supplémentaires:
Exemple de CryptoJS:
Il existe une comparaison des performances entre les bibliothèques ci-dessus sur http://jsperf.com/md5-shootout/7 . Sur ma machine, les tests actuels (qui sont certes anciens) montrent que si vous recherchez la vitesse, Spark MD5 est votre meilleur pari (tout comme le code JKM). Cependant, si vous recherchez une bibliothèque plus complète, CryptoJS est votre meilleur choix, bien qu'il soit 79% plus lent que Spark MD5. Cependant, j'imagine que CryptoJS atteindrait finalement la même vitesse car c'est un projet un peu plus actif.
la source
la source
J'ai trouvé un certain nombre d'articles sur ce sujet. Ils ont tous suggéré la mise en œuvre de Joseph Meyers.
voir: http://jsperf.com/md5-shootout sur certains tests
dans ma quête de la vitesse ultime, j'ai regardé ce code, et j'ai vu qu'il pouvait être amélioré. J'ai donc créé un nouveau script JS basé sur le code Joseph Meyers.
voir Code Jospeh Meyers amélioré
la source
Actuellement l'implémentation la plus rapide de md5 (basée sur le code de Joseph Myers):
https://github.com/iReal/FastMD5
Comparaison de jsPerf: http://jsperf.com/md5-shootout/63
la source
Je n'ai besoin que de prendre en charge les navigateurs HTML5 qui prennent en charge les tableaux typés (DataView, ArrayBuffer, etc.) Je pense que j'ai pris le code Joseph Myers et l'ai modifié pour prendre en charge le passage dans un Uint8Array. Je n'ai pas remarqué toutes les améliorations, et il y a probablement encore quelques artefacts de tableau char () qui peuvent être améliorés. J'en avais besoin pour l'ajouter au projet PouchDB.
la source
txt = ''
- ce que cela signifie réellement?J'ai écrit des tests pour comparer plusieurs implémentations de hachage JavaScript, y compris la plupart des implémentations MD5 mentionnées ici. Pour exécuter les tests, accédez à http://brillout.github.io/test-javascript-hash-implementations/ et attendez un peu.
Il semble que l' implémentation YaMD5 de la réponse de R. Hill soit la plus rapide.
la source
Cela m'a dérangé de ne pas trouver d'implémentation à la fois rapide et compatible avec les chaînes Unicode.
J'en ai donc créé un qui prend en charge les chaînes Unicode et qui s'affiche toujours plus rapidement (au moment de la rédaction) que les implémentations ascii-only-strings actuellement les plus rapides:
https://github.com/gorhill/yamd5.js
Basé sur le code de Joseph Myers, mais utilise TypedArrays, ainsi que d'autres améliorations.
la source
Juste pour le fun,
celui-ci est de 42 lignes de long, tient en 120 caractères horizontalement et semble bon. C'est rapide? Eh bien - c'est assez rapide et c'est à peu près la même chose que toutes les autres implémentations JS.
Je voulais juste quelque chose qui ne semble pas moche dans mon fichier helpers.js et qui ne ralentisse pas mon SublimeText avec des lignes de ligne minifiées de 20 miles de long.
Voici donc mon md5 préféré.
Mais vraiment, je l'ai posté simplement pour des raisons esthétiques. De plus, avec les commentaires, c'est exactement 4000 octets. S'il vous plaît, ne demandez pas pourquoi. Je ne peux pas trouver d'explication appropriée pour mon comportement OCD / rebelle. Merci aussi Paul Johnston, merci Greg Holt. (Remarque: vous avez omis quelques mots clés var , j'ai donc pris la liberté de les ajouter.)
la source
Node.js a un support intégré
L'extrait de code ci-dessus calcule la chaîne hexadécimale MD5 pour la chaîne
hello world
L'avantage de cette solution est que vous n'avez pas besoin d'installer de bibliothèque supplémentaire.
Je pense que la solution intégrée devrait être la plus rapide. Sinon, nous devons créer un problème / PR pour le projet Node.js.
la source
js-md5 prend en charge la chaîne UTF-8, le tableau, ArrayBuffer, AMD ....
et vite. jsperf
la source
Peut-être que ce package était utile
https://www.npmjs.com/package/pure-md5
la source
Pourquoi ne pas essayer http://phpjs.org/functions/md5/ ?
Malheureusement, les performances sont limitées avec tout script émulé, mais cela peut rendre un vrai hachage md5. Bien que je déconseille d'utiliser md5 pour les mots de passe, car il s'agit d'un hachage à rendu rapide.
la source
Un hachage beaucoup plus rapide devrait être possible en calculant sur une carte graphique (implémentez un algorithme de hachage dans WebGL), comme expliqué à propos de SHA256: Est-il possible de calculer des hachages sha256 dans le navigateur en utilisant la carte vidéo de l'utilisateur, par exemple. en utilisant WebGL ou Flash?
la source
Vous pouvez également vérifier mon implémentation md5 . Elle devrait être d'env. le même que l'autre affiché ci-dessus. Malheureusement, les performances sont limitées par la boucle interne qui est impossible à optimiser davantage.
la source
Si les performances de votre application sont limitées par une implémentation Javascript de MD5, alors vous faites vraiment quelque chose de mal. Envisagez un changement architectural (Astuce: utilisez MD5 moins souvent)
la source