假设我们有一些Fibonacci LFSR,它输出一些序列。
如何改变启动LFSR,使其输出完全相同的序列,但以相反的顺序?
发布于 2016-05-05 22:28:15
在这里提供lfsr和反向lfsr的代码。第一个是来自wikipedia的lfsr代码,第二个是反向lfsr。
#include <stdio.h>
int main(void)
{
unsigned short start_state = 0xace1;
unsigned lfsr = start_state;
unsigned int period = 0;
do
{
unsigned short lsb = lfsr & 1;
lfsr >>= 1;
lfsr ^= (-lsb) & 0xb400;
++period;
printf("%x\n", lfsr);
} while (lfsr != start_state);
return 0;
}#include <stdio.h>
unsigned short bit_revert(unsigned short v)
{
int i = 0;
unsigned short lsb = 0;
unsigned short n = 0;
for (i = 0; i < sizeof(unsigned short) * 8; i++)
{
lsb = v & 1;
v >>= 1;
n <<= 1;
n |= lsb;
}
return n;
}
int main(void)
{
unsigned short start_state = 0xace1;
unsigned lfsr = start_state;
unsigned int period = 0;
do
{
unsigned short lsb = lfsr & 1;
lfsr >>= 1;
lfsr ^= (-lsb) & 0x8016;
++period;
printf("%x\n", bit_revert(lfsr));
} while (lfsr != start_state);
return 0;
}https://crypto.stackexchange.com/questions/29066
复制相似问题