我想使用线性反馈移位寄存器来混淆一个字符串,所以我试图理解下面的wiki代码 在下面的线性反馈移位寄存器的wiki示例中,' 0xACE1u '是用作起始状态的十六进制值,但我不明白这是什么0xB400u?
有人可以解释那是什么吗?以及任何解释如何使用 LFSR 来混淆字符串的链接将不胜感激
int main(void)
{
uint16_t start_state = 0xACE1u; /* Any nonzero start state will work. */
uint16_t lfsr = start_state;
unsigned period = 0;
do
{
unsigned lsb = lfsr & 1; /* Get LSB (i.e., the output bit). */
lfsr >>= 1; /* Shift register */
if (lsb) { /* If the output bit is 1, apply toggle mask. */
lfsr ^= 0xB400u;
}
++period;
} while (lfsr != start_state);
return 0;
}