2
$\begingroup$

I have written a C implementation of the Berlekamp-Massey algorithm to work on finite fields of size any prime. It works on most input, except for the following binary GF(2) sequence:

0110010101101 producing LFSR $\langle{}7, 1 + x^3 + x^4 + x^6\rangle{}$

i.e. coefficients $c_1 = 0, c_2 = 0, c_3 = 1, c_4 = 1, c_5 = 0, c_6 = 1, c_7 = 0$

however, when using the recurrence relation \begin{equation} s_j = (c_1s_{j-1} + c_2s_{j-2} + \cdots + c_Ls_{j-L}) \mbox{ for } j \geq L. \end{equation} to check the result, I get back:

0110010001111, which is obviously not right.

Using the online calculator here they say the (I believe) characteristic polynomial should be $x^7 + x^4 + x^3 + x^1$. Which, according to my paper working, the reciprocal should indeed be $1 + x^3 + x^4 + x^6$.

What am I doing wrong? / Where is my understanding lacking?

  • 0
    [Cross-posted](http://crypto.stackexchange.com/q/2412/351) on CS.SE. Please don't cross-post. That fragments answers and violates site rules.2014-05-12

1 Answers 1

3

It seems to me that something went wrong, when you tried to regenerate the sequence. When the linear span is $7$ and the feedback polynomial is $1+x^3+x^4+x^6$, we have the recurrence relation $ s_j=s_{j-3}+s_{j-4}+s_{j-6} $ for all $j\ge 7$.

Your sequence has $s_0=0$, $s_1=1$, $s_2=1$, $s_3=0$, $s_4=0$, $s_5=1$, $s_6=0$ as the initial segment. Using the above recurrence relation gives $ \begin{aligned} s_7&=s_4+s_3+s_1=1,\\ s_8&=s_5+s_4+s_2=0,\\ s_9&=s_6+s_5+s_3=1,\\ s_{10}&=s_7+s_6+s_4=1,\\ s_{11}&=s_8+s_7+s_5=0,\\ s_{12}&=s_9+s_8+s_6=1, \end{aligned} $ recovering the remaining of your input.

Hopefully this helps you in locating the bug, if any.

  • 0
    There was indeed a bug in the code that generated the sequence back from the recurrence, which didn't show in any of the other test cases. Thank you.2012-04-25