Software Developer Education - Applying Bloom Filters to Large, Real World Problems
In June 2017, The National Institute of Science and Technology (NIST) Special Publication 800-63-3b  established new guidelines with regard to how organizations should vet user passwords. Rather than composition policies that require a certain number of character sets, NIST now recommends that organizations check passwords against a list of banned passwords and reject those found on the list. As of July 2018, the ’Have I Been Pwned’ list of known compromised passwords, alone, numbers more than half a billion strings  and this number is expected to grow larger as more online sites are compromised. This creates space and time efficiency challenges for software developers. A bloom filter , as described by Burton H. Bloom in his 1970 paper entitled, "Space/Time Trade-offs in Hash Coding with Allowable Errors", would be an efficient data structure to solve this problem. However, while software developers are very familiar with technologies and data structures such as relational databases, arrays, lists, trees and hash tables, they are not as familiar with less common, more abstract data structures. This work is intended to help software developers understand the complexity of lesser known data structures, such as bloom filters, and determine how and when to use them to solve large, real world problems.