Creo que me encontré con uno de Paul Johnston en http://pajhome.org.uk/crypt/md5/contrib/sha1_stream.js. Se enumera en la página http://pajhome.org.uk/crypt/md5/scripts.html. No lo he probado yo mismo, pero he usado su versión no transitable que modificó para ello.
ACTUALIZACIÓN: Este es un código de ejemplo (lo verifiqué contra un SHA1 independiente que se sabe que es correcto). Asegúrese de incluir el sha1.js original (encontrado en http://pajhome.org.uk/crypt/md5/sha1.js) antes de sha1_stream.js transmisible.
<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>
Gracias sunetos. Supongo que esto es lo que quiero. Pero no hay ningún documento ni ejemplo para mostrar cómo usarlo. ¿Me puedes ayudar? –
Acabo de actualizarlo para mostrar una muestra de cómo usarlo. – sunetos
Tenga en cuenta que la versión actual de sha1_stream.js tiene un error y dará resultados incorrectos para ciertas longitudes de entrada. Para solucionar esto, reemplace 'h [8] + = 512 - len% 512;' con 'h [8] = (len + 576 >> 9) << 9;' - olvida incluir el relleno al redondear a un múltiplo de 512 bits. La versión sin transmisión no tiene ese error. – Zarat