Tôi tin rằng tôi đi qua từng Paul Johnston tại http://pajhome.org.uk/crypt/md5/contrib/sha1_stream.js. Nó được liệt kê trên trang http://pajhome.org.uk/crypt/md5/scripts.html. Tôi đã không tự mình thử nghiệm, nhưng tôi đã sử dụng phiên bản không thể phát trực tuyến của anh ấy mà anh ấy đã sửa đổi cho nó.
CẬP NHẬT: Dưới đây là một số mã mẫu (Tôi đã xác minh mã này với một SHA1 riêng biệt được biết là chính xác). Đảm bảo bạn bao gồm sha1.js gốc (được tìm thấy tại http://pajhome.org.uk/crypt/md5/sha1.js) trước sha1_stream.js có thể phát trực tuyến.
<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>
Cảm ơn sunetos. Tôi đoán đây là những gì tôi muốn. Nhưng không có tài liệu và ví dụ để chỉ cách sử dụng nó. Bạn có thể giúp tôi được không? –
Chỉ cần cập nhật nó để hiển thị một mẫu về cách sử dụng nó. – sunetos
Lưu ý rằng phiên bản hiện tại của sha1_stream.js có lỗi và sẽ cho kết quả không chính xác cho một số độ dài đầu vào nhất định. Để sửa lỗi này thay thế 'h [8] + = 512 - len% 512;' với 'h [8] = (len + 576 >> 9) << 9;' - nó quên bao gồm phần đệm khi làm tròn đến bội số 512 bit. Phiên bản không trực tuyến không có lỗi đó. – Zarat