Реализация SHA1 JavaScript для большой строки

У меня есть та же проблема как: алгоритм SHA-1 может быть вычислен на потоке? С низким объемом потребляемой памяти?

Я ищу реализацию JavaScript, которая вычислила блок блоком очень большой строки. Идея состоит в том, чтобы нарезать строку в блок на 512 битов и сделать это блок блоком.

Какая-либо подсказка?

[обновленное] Спасибо справка sunetos, я пишу приложение litte html5 java сценария: Генерируйте Контрольную сумму Файла SHA1 Используя Файл HTML5 API в JavaScript

7
задан Community 23 May 2017 в 12:09
поделиться

1 ответ

Кажется, я наткнулся на один Пол Джонстон на http://pajhome.org.uk/crypt/md5/contrib/sha1_stream.js . Он указан на странице http://pajhome.org.uk/crypt/md5/scripts.html . Я не тестировал это сам, но я использовал его непотоковую версию, которую он модифицировал для нее.

ОБНОВЛЕНИЕ: Вот пример кода (я проверил его по отдельному алгоритму SHA1, который считается правильным). Убедитесь, что вы включили исходный sha1.js (находится на http://pajhome.org.uk/crypt/md5/sha1.js ) перед потоковым sha1_stream.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>
4
ответ дан 7 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: