用于大字符串的SHA1 JavaScript实现

时间:2010-07-08 13:46:32

标签: javascript hash sha1

我遇到与Can SHA-1 algorithm be computed on a stream? With low memory footprint?

相同的问题

我正在寻找一个JavaScript实现,它逐块地计算一个非常大的字符串。我们的想法是将字符串切片为512位块并逐块进行。

任何提示?

[更新] 感谢sunetos的帮助,我写了一个简单的html5 java脚本应用程序:Generate SHA1 File Checksum Using HTML5 File API in Javascript

1 个答案:

答案 0 :(得分:4)

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

更新:这是一些示例代码(我针对已知正确的单独SHA1验证了它)。确保在stremable 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>