2010-07-08 29 views

回答

4

我相信我在http://pajhome.org.uk/crypt/md5/contrib/sha1_stream.js跨越一个来到保罗·约翰斯顿。它列在页面http://pajhome.org.uk/crypt/md5/scripts.html上。我自己没有测试过它,但我已经使用了他为其修改的非流式版本。

更新:这里是一些示例代码(我对它进行了验证,以证明它是正确的单独的SHA1)。确保在流式sha1_stream.js之前包含原始sha1.js(在http://pajhome.org.uk/crypt/md5/sha1.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> 
+0

谢谢sunetos。 我想这是我想要的。但是没有文档和例子来展示如何使用它。你可以帮我吗? – 2010-07-08 23:51:55

+0

刚刚更新它以显示如何使用它的示例。 – sunetos 2010-07-09 01:39:20

+0

请注意,sha1_stream.js的当前版本有一个错误,并会给某些输入长度提供不正确的结果。为了解决这个问题,用'h [8] =(len + 576 >> 9)<< 9替换'h [8] + = 512 - len%512;' - 当舍入到多个时,它忘记包含填充的512位。非流媒体版本没有该错误。 – Zarat 2014-05-27 13:04:18