前段时间我试图强行发送一个12位二进制“密钥”的遥控器。
我制作的设备有效,但速度非常慢,因为它以每秒约50位的速度尝试每个组合(4096个代码= 49152位= ~16分钟)
我打开接收器,发现它使用移位寄存器检查代码,尝试之间不需要延迟。这意味着接收器只是查看要接收的最后12位,看它们是否与密钥匹配。
这意味着如果发送了流111111111111000000000000
,则它已经有效地尝试了所有这些代码。
111111111111 111111111110 111111111100 111111111000
111111110000 111111100000 111111000000 111110000000
111100000000 111000000000 110000000000 100000000000
000000000000
在这种情况下,我使用了24位来尝试13个12位组合(> 90%压缩)。
有没有人知道一种算法可以通过利用这个来减少我发送的49152位?
答案 0 :(得分:13)
你所说的是de Bruijn sequence。如果您不关心它是如何工作的,您只需要结果here it is。
答案 1 :(得分:0)
在我的头顶上,我想在每个12位序列中翻转一位会处理另外13个组合,例如111111111101000000000010,然后是111111111011000000000100等。但是你仍然需要做很多排列,即使是我认为你还有一点需要做111111111101000000000100等。然后在一侧翻转两位,在另一侧翻转1,等等。