Я сделал вот так, в несколько ходов, хотелось бы конечно покрасивше
input - одномерный массив битов.
tInp - временный массив, в который возвращаю преобраованный input, потом обратно в input возвращаю его значение.
И только потом получил массив state, такой который хотел. Вобщем абракадабра.
byteLen=8;
for (var j=0; j<input.length;j+=byteLen) tInp.push(input.slice(j, j+byteLen));
input = tInp;
for (var r=0; r<4;r++) state.push(input.slice(r*input.length/4, r*input.length/4+input.length/4));