The algorithm has the following characteristics an initial state (cannot be 0), that state should be represented by n bits (each with a position in a register), a shift cycle that moves the bits along, an output path yielding random its, a feedback path returning a new bit to the vacated spot (from the shift and output), and a calculation of a new bit through XOR of certain 'taps'. While they are not without their flaws (such as correlation attacks) they represent a solid first step into the field and are used in many production systems (such as A5/1). An easy algorithm to implement is Linear Feedback Shift Registers (LFSR) as it has simple solutions in hardware and software. Having sat on it for a week, I felt like I needed to explore the area of randomness to complete the thought cycle on Stream Ciphers. I ignored the complex issue of generating a stream of bits used to encrypt the plain text. Previously I wrote about implementing a stream cipher in JavaScript.