Linear pseudo-random number generators are easy to understand and implement. The most famous of these is the linear congruential generator. In the first part of this thesis, we present this generator and the various key recovery algorithms that have been designed against it since the 1970s. Because this generator is simple, it has been used to design more complex generators, which we have attacked.
Other pseudo-random number generators are based on difficult problems, such as the Knapsack generator and its variants. Unfortunately they are unproven, even under the assumption that the underlying problem, the Subset Sum problem, is hard. We have also tackled them successfully.