首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Galois LFSR转换为Fibonacci LFSR?

如何将Galois LFSR转换为Fibonacci LFSR?
EN

Cryptography用户
提问于 2017-04-10 10:19:26
回答 1查看 3K关注 0票数 4

我刚刚找到了Galois类型LFSR输出的序列,见这里

现在我知道有一个斐波那契型LFSR能够输出同样的序列,但是我怎么能找到这个LFSR的前六种状态呢?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2017-04-10 12:30:34

在这个答案中,我将考虑在这个问题上提到的Galois:Galois型LFSR序列输出,见下图。

首先,我们假设位的5个位置从左到右编号:0。4.

Galois代表的情况如下:

代码语言:javascript
复制
+--------------------------------------------------------------+
|                         |           |           |            |
|    +-----+     +-----+  |  +-----+  |  +-----+  |  +-----+   |
|    |     |     |     |  v  |     |  v  |     |  v  |     |   |
+--->+  1  +---->+  0  +--+->+  0  +--+->+  0  +--+->+  0  +-------> ...
     |     |     |     |     |     |     |     |     |     |
     +-----+     +-----+     +-----+     +-----+     +-----+

如果我们迭代LFSR 10轮,就会得到:

代码语言:javascript
复制
1 0 0 0 0 : initial state
0 1 0 0 0 -> 0
0 0 1 0 0 -> 0
0 0 0 1 0 -> 0
0 0 0 0 1 -> 0
1 0 1 1 1 -> 1

1 1 1 0 0 -> 1
0 1 1 1 0 -> 0
0 0 1 1 1 -> 0
1 0 1 0 0 -> 1
0 1 0 1 0 -> 0

假设现在我们有一个Fibonacci LFSR,但是我们想知道水龙头在哪里。我们将迭代lfsr并用字母命名unkowns。解决这一问题涉及两个技巧:

  • 一个字母一旦设置,以后就不会修改(相对于Galois版本)。
  • 使用初始10000状态将显示水龙头的位置。

所以我们有:

代码语言:javascript
复制
1 0 0 0 0 : initial state
a 1 0 0 0 -> 0            (i)
b a 1 0 0 -> 0
c b a 1 0 -> 0
d c b a 1 -> 0
e d c b a -> 1

那我们就能解决了。

代码语言:javascript
复制
f e d c b -> a = 1

通过(i),我们可以推断出位置0对输出的影响:所有其他位置都为空。

代码语言:javascript
复制
g f e d c -> b = 0 -> b

只要位置0有影响,b就是1。因此,位置1也影响它使其回到0。

代码语言:javascript
复制
h g f e d -> c = 0

只要位置0和1有影响,c就是0。位置2也是影响它使其回到0

代码语言:javascript
复制
i h g f e -> d = 1

d是它应该是的值,因此位置3没有影响。

代码语言:javascript
复制
j i h g f -> e = 0

e是它应有的价值,就像有反馈一样。

如果我们继续对这两个模型的下5个输出,我们有以下流:01111

最后,LFSR的Fibonacci表示如下:

代码语言:javascript
复制
+-------------+-----------+-----------+------------------------+
|             ^           ^           ^                        |
|    +-----+  |  +-----+  |  +-----+  |  +-----+     +-----+   |
|    |     |  |  |     |  |  |     |  |  |     |     |     |   |
+--->+  1  +---->+  0  +---->+  0  +---->+  0  +---->+  0  +-------> ...
     |     |     |     |     |     |     |     |     |     |
     +-----+     +-----+     +-----+     +-----+     +-----+

这里是一个小的python代码,用于检查两者之间的等价性。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/46478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档