Je crois que je suis tombé sur un par Paul Johnston à http://pajhome.org.uk/crypt/md5/contrib/sha1_stream.js. Il est répertorié sur la page http://pajhome.org.uk/crypt/md5/scripts.html. Je ne l'ai pas testé moi-même, mais j'ai utilisé sa version non streamable qu'il a modifiée pour cela. MISE À JOUR: Voici un exemple de code (je l'ai vérifié par rapport à un SHA1 distinct connu pour être correct). Assurez-vous d'inclure le fichier sha1.js d'origine (trouvé au http://pajhome.org.uk/crypt/md5/sha1.js) avant le fichier streamable sha1_stream.js.
<script src="sha1.js" type="text/javascript" charset="utf-8"></script>
<script src="sha1_stream.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var input = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';
var blocksize = 512;
var h = naked_sha1_head();
for (var i = 0; i < input.length; i += blocksize) {
var len = Math.min(blocksize, input.length - i);
var block = input.substr(i, len);
naked_sha1(str2binb(block), len*chrsz, h);
}
var result = binb2hex(naked_sha1_tail(h));
</script>
Merci sunetos. Je suppose que c'est ce que je veux. Mais il n'y a pas de document ni d'exemple pour montrer comment l'utiliser. Pouvez-vous m'aider? –
Juste mis à jour pour montrer un exemple de comment l'utiliser. – sunetos
Notez que la version actuelle de sha1_stream.js a un bug et donnera des résultats incorrects pour certaines longueurs d'entrée. Pour corriger cela, remplacez 'h [8] + = 512 - len% 512;' par 'h [8] = (len + 576 >> 9) << 9;' - il oublie d'inclure le remplissage lors de l'arrondi à un multiple de 512 bits. La version non-streaming n'a pas ce bug. – Zarat