C++17: Diseñando un verificador variádico de contraseñas

Introducción


El objetivo de este post es el de diseñar un verificador de contraseñas que permita combinar distintas políticas de validación para las claves. Como caso base, nuestro verificador comprobará que la longitud de una contraseña pertenezca a un rango permitido. En situaciones de mayor interés, podremos también incluir reglas de validación adicionales que comprueben la presencia de letras minúsculas y mayúsculas, dígitos y/o símbolos no-alfanuméricos. Para ello, haremos uso de expresiones regulares (regex) y plantillas variádicas (variadic templates [1]) introducidas en el estándar C++11, así como de los denominados fold expressions proporcionados por C++17 [2]. Emplearemos, asimismo, la biblioteca {fmt}lib --en proceso de estandarización para C++20-- con el fin de facilitar el formato de texto [3].