Quoting Wikipedia, In computer science and mathematical logic, the satisfiability modulo theories (SMT) problem is a decision problem for logical formulas with respect to combinations of background theories expressed in classical first order logic with equality. Formally speaking, an SMT instance is a formula in first order logic, where some function and predicate symbols have additional interpretations, and SMT is the problem of determining whether such a formula is satisfiable.
This article shows how we can use an SMT solver in developing a key generator. We need to find valid keys while also satisfying certain constraints. We will use the Z3 SMT Solver, as it is quite easy to use and also has a nice python API to code against.