I want to know how the nonlinear function of KeeLoq works.

Here at Wikipedia it says that:

The NLFSR feedback function is 0x3A5C742E

I understand that F(a,b,c,d,e) = 3A5C742E.

Now, he did not say anything about encoding of a, b, c, d, e. I consider them as in ASCII. But each letter will have 8-bit. So total would be 40. Could someone explains to me how to compute this function or what is the encoding scheme of a, b, c, d, e in order to apply Karnaugh map?

  • $\begingroup$ The $a,\ldots,e$ are bits, see below. $\endgroup$ Nov 28, 2017 at 5:35

1 Answer 1


Suppose you want to compute $F(0,0,0,1,0)$, then note that $00010_2 = 2_{10}$ so the result is bit $2$ (counted from $0$ from right to left) of 0x3A5C742E, or in C terms just (3A5C742E >> 2) & 1 = 1 This is the standard convention when encoding such Boolean functions.

As another example F(1,1,1,1,1) = (0x3A5C742E >> 31) & 1 = 0 as $11111_2 = 31_{10}$ etc.

  • $\begingroup$ It extracts the bits from a constant? $\endgroup$
    – Melab
    Nov 28, 2017 at 5:18
  • $\begingroup$ @Melab the constant is just the 32 values for the 32 different inputs. It’s a compact table. $\endgroup$ Nov 28, 2017 at 5:20
  • $\begingroup$ Elaborate, please. $\endgroup$
    – Melab
    Nov 28, 2017 at 5:24
  • $\begingroup$ @Melab Read the answer, it explains. $\endgroup$ Nov 28, 2017 at 5:28
  • $\begingroup$ @HennoBrandsma Thank you Henno, It is clear now. another example also F(1,0,0,0,0)=0. $\endgroup$
    – user777
    Nov 28, 2017 at 6:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.