Existem muitas implementações de JavaScript MD5 por aí. Alguém sabe qual é o mais avançado, mais corrigido e mais rápido?
Eu preciso disso para esta ferramenta.
javascript
performance
md5
powtac
fonte
fonte
Respostas:
Ouvi dizer que a implementação de Joseph's Myers é bastante rápida. Além disso, ele tem um longo artigo sobre otimização de Javascript que descreve o que aprendeu enquanto escrevia sua implementação. É uma boa leitura para qualquer pessoa interessada em javascript com desempenho.
http://www.webreference.com/programming/javascript/jkm3/
Sua implementação MD5 pode ser encontrada aqui
fonte
var add32
on-line 185 deveria seradd32
o melhor para encontrar o melhor garfo possível e atualizei-o para esta nova versão: gist.github.com/MichaelPote/3f0cefaaa9578d7e30beEu sugiro que você use CryptoJS neste caso.
Basicamente, o CryptoJS é uma coleção crescente de algoritmos criptográficos padrão e seguros implementados em JavaScript usando as melhores práticas e padrões. Eles são rápidos e têm uma interface consistente e simples.
Portanto, se você deseja calcular o hash MD5 da sua string de senha, faça o seguinte:
Portanto, este script publicará o hash da sua string de senha no servidor.
Para mais informações e suporte sobre outros algoritmos de cálculo de hash, você pode visitar:
http://code.google.com/p/crypto-js/
fonte
Ao selecionar a biblioteca, também é importante verificar se ele suporta estruturas modernas, como Bower, passa jslint, suporta modelo de plug-in para JQuery ou sistemas de módulos como AMD / RequireJS, além de estar em desenvolvimento ativo e ter mais de 1 colaboradores. Existem algumas opções que atendem a alguns ou a todos esses critérios adicionais:
Exemplo do CryptoJS:
Há uma comparação de desempenho entre as bibliotecas acima em http://jsperf.com/md5-shootout/7 . Em minha máquina, os testes atuais (que são reconhecidamente antigos) mostram que, se você procura velocidade, o Spark MD5 é sua melhor aposta (e também o código JKM comum). No entanto, se você procura uma biblioteca mais abrangente, o CryptoJS é sua melhor aposta, embora seja 79% mais lento que o Spark MD5. No entanto, eu imagino que o CryptoJS acabaria atingindo a mesma velocidade, pois é um projeto um pouco mais ativo.
fonte
fonte
Encontrei vários artigos sobre esse assunto. Todos eles sugeriram a implementação de Joseph Meyers.
consulte: http://jsperf.com/md5-shootout em alguns testes
em Minha busca pela velocidade máxima, olhei para esse código e vi que ele poderia ser melhorado. Então, eu criei um novo script JS baseado no código Joseph Meyers.
consulte Código de Jospeh Meyers aprimorado
fonte
Atualmente, a implementação mais rápida do md5 (com base no código de Joseph Myers):
https://github.com/iReal/FastMD5
Comparação jsPerf: http://jsperf.com/md5-shootout/63
fonte
Eu só preciso dar suporte a navegadores HTML5 que suportam matrizes digitadas (DataView, ArrayBuffer etc.). Acho que peguei o código Joseph Myers e o modifiquei para suportar a passagem em um Uint8Array. Não captei todas as melhorias e ainda existem provavelmente alguns artefatos de array char () que podem ser aprimorados. Eu precisava disso para adicionar ao projeto PouchDB.
fonte
txt = ''
que realmente significa?Escrevi testes para comparar várias implementações de hash JavaScript, incluindo a maioria das implementações MD5 mencionadas aqui. Para executar os testes, acesse http://brillout.github.io/test-javascript-hash-implementations/ e aguarde um pouco.
Parece que a implementação do YaMD5 da resposta de R. Hill é a mais rápida.
fonte
Incomodou-me o fato de não conseguir encontrar uma implementação que seja rápida e que suporte seqüências de caracteres Unicode.
Por isso, criei um que suporta seqüências de caracteres Unicode e ainda é mais rápido (no momento da escrita) do que as implementações atualmente mais rápidas atualmente:
https://github.com/gorhill/yamd5.js
Baseado no código de Joseph Myers, mas usa TypedArrays, além de outras melhorias.
fonte
Apenas por diversão,
este tem 42 linhas, cabe 120 caracteres horizontalmente e fica bem. É rápido? Bem - é rápido o suficiente e é aproximadamente o mesmo que todas as outras implementações de JS.
Eu só queria algo que não parecesse feio no meu arquivo helpers.js e não diminuísse o meu SublimeText com apenas uma linha de 20 milhas.
Então aqui está o meu MD5 favorito.
Mas, na verdade, eu o postei apenas por considerações estéticas. Além disso, nos comentários, são exatamente 4000 bytes. Por favor, não pergunte o porquê. Não consigo encontrar uma explicação adequada para o meu comportamento de TOC / rebelde. Além disso, obrigado Paul Johnston, obrigado Greg Holt. (Nota: vocês omitiram algumas palavras-chave var, então tomei a liberdade de adicioná-las.)
fonte
O Node.js possui suporte interno
O trecho de código acima calcula a sequência hexadecimal MD5 para a sequência
hello world
A vantagem desta solução é que você não precisa instalar uma biblioteca adicional.
Eu acho que a solução integrada deve ser a mais rápida. Caso contrário, devemos criar issue / PR para o projeto Node.js.
fonte
js-md5 suporta UTF-8 string, array, ArrayBuffer, AMD ....
e rápido. jsperf
fonte
Talvez este pacote tenha sido útil
https://www.npmjs.com/package/pure-md5
fonte
Por que não tentar http://phpjs.org/functions/md5/ ?
Infelizmente, o desempenho é limitado com qualquer script emulado, no entanto, isso pode render um hash md5 real. Embora eu recomendaria não usar o md5 para senhas, pois é um hash de renderização rápida.
fonte
Um hash muito mais rápido deve ser possível calculando na placa gráfica (implemente o algoritmo de hash no WebGL), conforme discutido aqui sobre o SHA256: É possível calcular os hashes sha256 no navegador usando a placa de vídeo do usuário, por exemplo. usando WebGL ou Flash?
fonte
Você também pode verificar a minha implementação MD5 . Deve ser aprox. o mesmo que o outro postado acima. Infelizmente, o desempenho é limitado pelo loop interno, que é impossível de otimizar mais.
fonte
Se o desempenho do seu aplicativo é limitado por uma implementação Javascript do MD5, você está realmente fazendo algo errado. Considere uma alteração na arquitetura (Dica: use MD5 com menos frequência)
fonte