2010-07-08 31 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