Использование функции XOR для XoR слов вместе из битов символов - PullRequest
0 голосов
/ 11 января 2019

В настоящее время я работаю над алгоритмом хеширования в школе и получаю информацию из учебника в Интернете.

https://www.cryptocompare.com/coins/guides/how-does-a-hashing-algorithm-work/

В уроке на шаге 9 они хотят, чтобы я собрал слова XoR и создал 80 слов из битовых слов моего персонажа. Я точно не знаю, как это сделать, но я понял.

Мои текущие битовые слова размером 16x32 выглядят так (как в учебнике):

01000011010100100101100101010000 
010101000100111110­0­0­0­0­0­0­0­0­0­0­0000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000000000    
00000000000000000000000000000000 
00000000000000000000000000110000

И это то, что учебник хочет, чтобы я сделал.

Преобразуйте битовые слова размером 16 x 32 символа в 80 слов, используя шаг функция петли. Сначала выберите четыре слова для первого прохода через цикл, представляющий собой строки 1, 3, 9 и 14 из шага 8.

В следующий раз через цикл мы будем использовать слова 2,4,10,15 со стадии 8.

Следующий процесс - совместить слова XoR. Ксоринг - это просто основа Вычислительная функция, которая дает вывод q, только если два оба входа имеют 1 в этой позиции - если они не ноль.

The function is ((14 XOR 9) XOR 3) XOR 1) which is:

00000000000000000000000000000000
XOR
01000011010100100101100101010000
Is
01000011010100100101100101010000

Это мой код:

function convertToROA(n) {
    var h1 = "01100111010001010010001100000001";
    var h2 = "11101111110011011010101110001001";
    var h3 = "10011000101110101101110011111110";
    var h4 = "00010000001100100101010001110110";
    var h5 = "11000011110100101110000111110000";


    var intBit = "";

    var binary = "";

    n.forEach(function(element) {
      binary = binary + 0 + (element).toString(2);
    });

    var length = binary.length;

    intBit = intBit + binary + 1;

    for (var i = 0; i < (2**9)-length-1; i++) {
      intBit = intBit + "0";
    }

    console.log(intBit.length);
    console.log(binary);
    console.log(binary.length);
    console.log((binary.length).toString(2).length);

    intBit = intBit.substring(0, (2**9)-((binary.length).toString(2).length));
    intBit = intBit + (binary.length).toString(2);

    console.log(intBit);

    var splitText = intBit.match(/.{32}|/g);

    console.log(splitText);
}
...