【发布时间】:2013-06-03 07:11:05
【问题描述】:
我试图了解 galois LFSR 代码的工作原理。在维基百科页面上有一个带有示例的图。有一个C sn-p代码。
#include <stdint.h>
uint16_t lfsr = 0xACE1u;
unsigned period = 0;
do {
unsigned lsb = lfsr & 1; /* Get lsb (i.e., the output bit). */
lfsr >>= 1; /* Shift register */
if (lsb == 1) /* Only apply toggle mask if output bit is 1. */
lfsr ^= 0xB400u; /* Apply toggle mask, value has 1 at bits corresponding
* to taps, 0 elsewhere. */
++period;
} while(lfsr != 0xACE1u);
我无法理解维基百科上给出的数字并与代码相关联。切换蒙版在做什么?任何人都可以解释该操作如何使用示例位序列及其移位版本。我不了解字段,也不了解代码。我在网上查了一下,但如果不进入领域术语,就找不到对该算法的任何好的解释。请帮忙。
【问题讨论】:
-
我正在尝试实现 Galois LFSR 来混淆一个字符串,我想了解 LFSR 是如何工作的,在上面的 wiki 中,0xACE1u 是启动状态,我可以知道什么是 '0xB400u' 吗?跨度>
标签: c math shift galois-field