14. 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 representative bit location, the representative bit location 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 bit values at the representative bit locations 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. 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 representative bit location, the representative bit location 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 bit values at the representative bit locations 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. 15. The method of claim 14 wherein the act of the interrogating includes, starting at a first level of the hierarchical data structure, 1) hashing the arbitrary length bit string using the indicated hash function to obtain an n-bit binary value; 2) obtaining a bit value at the representative bit location of the n-bit binary value; 3) concatenating the bit value obtained at the representative bit location with any previous, by obtaining bit values at representative bit locations of any previous levels of the hierarchical data structure; 4) determining whether the present level of the hierarchical data structure is a last level; and 5) if it was determined that the present level of the hierarchical data structure is not the last level, then A) repeating acts (1) through (4) 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) determining the address of the memory as the concatenation of the obtained bit values.