今天是个好日子!我被分配为 x9+x3+1 和 x9+x4+1 编写 LFSR 函数。我花了几天时间阅读有关 LFSR 的信息,但我仍然感到困惑。请问有人可以澄清这个话题吗?
据我了解,LFSR 以这种方式工作:
- 我们取了一些初始种子。
- 我们在种子中取第一个符号(如果我们的种子不止一个符号),我们:使用 XOR 对“轻敲”咬合求和,哪些位置是我们的“多项式”中的阻碍(我的情况是 x9+x3+1)。这意味着我们对存储在 8 和 2 个寄存器中的值进行异或运算,然后使用异或将 1 相加。 b.然后我们以某种方式将整个寄存器向右移动,右边的最后一个符号将成为我们的第一个“LFSR 符号”?
- 我们将在第 2 步中获得的值放入第一个寄存器中。
- 重复它直到到达种子的末端。
是否正确?
我写了这段代码,试图弄清楚如何实现它:
string seed = "fhqzjqsd";
string gLFSR[seed.size];
for (int i = 0; i< seed.size; i++){
//9+3+1
gLFSR[i] = ((seed[i]>>8) ^ (seed[i]<<5) ^ 1);
}
}
任何帮助,将不胜感激。或链接以获得全面的解释。我确实看过一些 YT 视频,但其中解释的内容对使用 c++ 进行实际编码没有帮助。