我目前正在学校研究一种哈希算法,并且正在从在线教程中获取信息。
https://www.cryptocompare.com/coins/guides/how-does-a-hashing-algorithm-work/
在第9步的教程中,他们希望我一起XoR单词,并从我的字符位单词创建80个单词。我不知道该怎么做,但我明白了。
我当前的16x32字符位字看起来像这样(与教程中相同):
01000011010100100101100101010000
01010100010011111000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000110000
这就是本教程要我做的。
使用一个步骤将16 x 32字符位字转换为80个字 循环功能。首先选择四个单词,以便第一次通过 循环,其中包含第8步中的字符串1,3,9&14。
下一次循环时,我们将使用舞台上的单词2,4,10,15 8。
下一步是将单词XoR在一起。 Xoring只是一个基本的 仅在两个函数同时给出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);
}