Patent attributes
An algorithm for recovering a key used to produce a cyphertext-plaintext pair includes (a) loading at least a portion of a probabilistic key table into memory; (b) distributing the keys in the portion of the probabilistic key table into a first plurality of buffer files that are in RAM. A beginning portion of each key is used as an index identifying the buffer file; (c) when any of the files in the first plurality of buffer files is full, storing contents of the first plurality of buffer files in unused space of a corresponding file of a second plurality of buffer files, wherein the second plurality of buffer files are kept on a hard disk drive; (d) resetting the first plurality of buffer files to zero; (e) repeating steps (a)-(d) for all keys in the probabilistic key table until one of the files of the second plurality of buffer files is full; (f) for each of the second plurality of buffer files, updating a bitmask file corresponding to keys missing from the probabilistic key table; (g) resetting the second plurality of buffer files to zero; and (h) repeating steps (a)-(g) for all keys in the probabilistic key table. If the key is not in the probabilistic key table, the missing keys can be tested.