13. A method for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings, using a memory storing, for each of the plurality of known arbitrary-length bit strings, the known arbitrary-length bit string or a pointer thereto, in an addressed location, and a hierarchical data structure, wherein each level of the hierarchical data structure includes one or more nodes, each node associated with an indication of a hash function and a boundary value, the boundary value partitioning a set of results of the hash function of at least some of the known arbitrary-length bit strings, the method comprising: a) interrogating the hierarchical data structure using hashes of the input arbitrary-length bit string, the indicated hash functions and the boundaries to determine an address of the memory; b) reading the known arbitrary-length bit string or a pointer thereto, from the memory at the determined address; and c) comparing the input arbitrary-length bit string and the known arbitrary-length bit string to determine whether or not a match exists.
13. A method for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings, using a memory storing, for each of the plurality of known arbitrary-length bit strings, the known arbitrary-length bit string or a pointer thereto, in an addressed location, and a hierarchical data structure, wherein each level of the hierarchical data structure includes one or more nodes, each node associated with an indication of a hash function and a boundary value, the boundary value partitioning a set of results of the hash function of at least some of the known arbitrary-length bit strings, the method comprising: a) interrogating the hierarchical data structure using hashes of the input arbitrary-length bit string, the indicated hash functions and the boundaries to determine an address of the memory; b) reading the known arbitrary-length bit string or a pointer thereto, from the memory at the determined address; and c) comparing the input arbitrary-length bit string and the known arbitrary-length bit string to determine whether or not a match exists. 14. The method of claim 13 wherein the acts of the method include, starting at a first level of the hierarchical data structure, 1) hashing the arbitrary length bit string using the indicated hash function to obtain a value; 2) comparing the obtained value with the boundary value; 3) if the obtained value is greater than the boundary value, defining an address bit as a first bit value, otherwise defining the address bit as a second bit value; 4) concatenating the address bit with any previous address bits, 5) determining whether the present level of the hierarchical data structure is a last level; and 6) if it was determined that the present level of the hierarchical data structure is not the last level, then A) repeating acts (1) through (5) at a next level of the hierarchical data structure, and otherwise, if it was determined that present level of the hierarchical data structure is the last level, then A) reading the stored arbitrary-length bit string using an addressed memory location at an address defined by the concatenation of the address bits, and B) comparing the read arbitrary-length bit string to the arbitrary-length bit string input to determine whether a match exists.