after spending quite some time trying to understand the function of this method, I still couldn't figure what does it do. As I understand, stateAsBytes should contain hex strings like "\xA1\X32\X89\XB2", what does stateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j)
do? Why it uses bitwise assignment ?
void fromBytesToWords(unsigned long **stateAsWords, unsigned char *stateAsBytes)
{
for(int i=0; i<(1600/64); i++) {
stateAsWords[i%5][i/5] = 0;
for(int j=0; j<(64/8); j++)
stateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j);
}
}