/* * A5/1 Implementation * * Information: http://en.wikipedia.org/wiki/A5/1 * Released : 24/10/2008 * App Options: -d (Debugging mode) * * Written by : Brett Gervasoni (brett.gervasoni [at] gmail.com) * Thanks to : Angus McMahon (angusmcmahon [at] gmail.com) * * Notes: * - Debugging mode will show step by step processes * - The code has been designed to be easily expandable, so that more secure * versions of the A5 family can be introduced. * - Various properties of the A5Engine class can be modified * - If order matters then put things in order to begin with! * Polynomials, clocking bits, and maximum register lengths. * - If data is not in order the application will try its best to make * the cipher work. * - Polynomials for each register are chosen based on their largest exponent * being less than register length. * * Instructions: * numRegisters = The number of registers to use * maxRegLens = The max register length for each register * regIndexes = The clocking bits for each register * polynomialsArray = The polynomials to use for each register * sourceArray = Random binary bits * */ An implementation of the A5/1 encryption cipher which is currently used in Telstra GSM mobile phones.