Fibonacci Linear Feedback Shift Register using specified polynomial maskGenerates a maximal length pseudo-random sequence of length 2^degree-1.
More...
Fibonacci Linear Feedback Shift Register using specified polynomial mask
Generates a maximal length pseudo-random sequence of length 2^degree-1.
Constructor: gri_lfsr(int mask, int seed, int reg_len);
mask - polynomial coefficients representing the locations
of feedback taps from a shift register which are xor'ed
together to form the new high order bit.
Some common masks might be:
x^4 + x^3 + x^0 = 0x19
x^5 + x^3 + x^0 = 0x29
x^6 + x^5 + x^0 = 0x61
seed - the initialization vector placed into the register
durring initialization. Low order bit corresponds
to x^0 coefficient – the first to be shifted as output.
reg_len - specifies the length of the feedback shift register to be used. Durring each iteration, the register is rightshifted one and the new bit is placed in bit reg_len. reg_len should generally be at least order(mask) + 1
see http://en.wikipedia.org/wiki/Linear_feedback_shift_register for more explanation.
next_bit() - Standard LFSR operation
Perform one cycle of the LFSR. The output bit is taken from
the shift register LSB. The shift register MSB is assigned from
the modulo 2 sum of the masked shift register.
next_bit_scramble(unsigned char input) - Scramble an input stream
Perform one cycle of the LFSR. The output bit is taken from
the shift register LSB. The shift register MSB is assigned from
the modulo 2 sum of the masked shift register and the input LSB.
next_bit_descramble(unsigned char input) - Descramble an input stream
Perform one cycle of the LFSR. The output bit is taken from
the modulo 2 sum of the masked shift register and the input LSB.
The shift register MSB is assigned from the LSB of the input.
See http://en.wikipedia.org/wiki/Scrambler for operation of these last two functions (see multiplicative scrambler.)