299 votes

plus rapide implémentation MD5 en JavaScript

Il existe de nombreuses implémentations de JavaScript MD5 là-bas. Quelqu'un sait lequel est le plus avancé, la plupart bugfixed et le plus rapide ?

J’en ai besoin pour cet outil : http://www.bruechner.de/md5file/js/

195voto

Matt Baker Points 1776

J'ai entendu parler de Joseph Myers mise en œuvre est très rapide. En outre, il a un long article sur le Javascript optimisation de décrire ce qu'il a appris lors de l'écriture de sa mise en œuvre. C'est une bonne lecture pour quiconque s'intéresse à performants javascript.

http://www.webreference.com/programming/javascript/jkm3/

Son MD5 mise en œuvre peut être trouvé ici

86voto

theCodeMachine Points 594

Je vous suggère d'utiliser CryptoJS dans ce cas.

Fondamentalement CryptoJS est une collection croissante de la norme et de sécuriser les algorithmes cryptographiques mis en œuvre en JavaScript en utilisant les meilleures pratiques et les modèles. Ils sont rapides et ils ont un uniforme et une interface simple.

Ainsi, Dans le cas où vous voulez calculer le hachage(MD5) de votre chaîne de mot de passe, puis procédez comme suit :

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script>
<script>
    var passhash = CryptoJS.MD5(password);

    $.post(
      'includes/login.php', 
      { user: username, pass: passhash },
      onLogin, 
      'json' );
</script>

Donc ce script post hash de votre chaîne de mot de passe pour le serveur.

Pour plus d'infos et de soutien sur d'autres hachage de calcul des algorithmes, vous pouvez visiter la page:

http://code.google.com/p/crypto-js/

38voto

ShitalShah Points 2213

Lors de la sélection de la bibliothèque il est également important de voir si elle prend en charge moderne des frameworks tels que Bower, passe jslint, prend en charge le plugin modèle de JQuery ou de systèmes de modules tels que AMD/RequireJS en plus d'être active dans le développement et ont plus de 1 contributeurs. Il y a quelques options qui satisfait à certaines ou la totalité de ces critères supplémentaires:

  • CryptoJS: C'est peut-être la plus vaste bibliothèque où chaque algorithme peut être utilisé séparément sans ajouter de matières grasses dans votre code JS. En Plus comme d'encodeurs/décodeurs pour UTF8, UTF16 et Base64. Je maintiens github qui est inscrit comme Bower package plus d'instructions sur la façon de l'utiliser avec RequireJS.
  • Spark MD5: C'est basé sur HM code de réponse mentionne qui est aussi le plus rapide de mise en œuvre. Cependant, en plus, une Étincelle de la mise en œuvre ajoute le support AMD, passe jslint plus a mode incrémental. Il n'a pas Base64 o/p, mais il a cru o/p (i.e. tableau de 32 bits int de l'insead de chaîne).
  • JQuery MD5 plugin: Très simple, terre à terre, mais ne semble pas avoir le mode raw.
  • JavaScript-MD5: Pas aussi chic ou rapide comme l'Étincelle mais en plus simple.

Exemple de CryptoJS:

//just include md5.js from the CryptoJS rollups folder
var hash = CryptoJS.MD5("Message");
console.log(hash.toString()); 

Il y a une comparaison des performances entre les bibliothèques ci-dessus à http://jsperf.com/md5-shootout/7. Sur ma machine actuelle des tests (qui sont certes anciennes) montre que si vous êtes à la recherche de vitesse Allumage MD5 est votre meilleur pari (et la plaine HM code). Toutefois, si vous cherchez plus complète de la bibliothèque puis CryptoJS est votre meilleur pari bien qu'il soit 79% plus lent que l'Étincelle MD5. Cependant, j'imagine CryptoJS finirait par atteindre la même vitesse qu'il est un peu plus active du projet.

12voto

ez2 Points 81

J’ai trouvé quelques articles sur ce sujet. Ils ont tous proposent Joseph Meyers mise en œuvre.

Voir : http://jsperf.com/md5-shootout sur certains tests

dans ma quête de la vitesse ultime, que j’ai regardé ce code, un i vu qu’il pourrait être amélioré. J’ai donc créé un nouveau script JS, basé sur le code de Joseph Meyers.

Voir code amélioré Jospeh Meyers

7voto

Dr.YSG Points 843

J’ai seulement besoin gérer les navigateurs HTML5 qui prennent en charge les tableaux typés (DataView, ArrayBuffer, etc..) Je pense que j’ai pris le Joseph Myers code et modifié pour soutenir le passage dans un Uint8Array. Je n’ai pas saisi toutes les améliorations, et il n’y a sans doute encore quelques char() artefacts de tableau qui peuvent être améliorés. J’avais besoin de cela pour ajouter au projet PouchDB.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X