En general, la probabilidad se reduce al tamaño del rango. Por lo tanto, para, digamos, una contraseña de 4 caracteres, el espacio de la contraseña es el número de caracteres disponibles elevado a la potencia del número de lugares en la contraseña.
Por ejemplo, un pin de banco - 4 dígitos, 10 caracteres (0-9) - 1000 contraseñas posibles, lo que hace que la probabilidad sea 1/10000.
Ahora su problema es más difícil, ya que su rango no es todas las contraseñas disponibles, ha eliminado algunas de las contraseñas altamente adivinables. Lo que tendrá que hacer es averiguar cuántas contraseñas potenciales se eliminan con cada regla, y asegúrese de tener en cuenta la superposición de reglas ... por ejemplo, 12345678 es una secuencia Y todos los caracteres. Luego tome el espacio total de la contraseña, reste las contraseñas que están prohibidas por cada regla, asegurándose de no contar un tipo de contraseña determinado dos veces.
No estoy seguro de lo que quieres decir con "no puede tener la palabra" johnbook "" quizás estoy siendo demasiado literal, obviamente "johnbook" es solo una contraseña. ¿Quiere decir que no puede tener esa palabra en particular, o que no puede tener ningún nombre común conocido o combinación de palabras cortas? Por ejemplo, ¿está prohibido "bethdesk"? ¿Cuál es el tamaño del diccionario que se está verificando y todas las combinaciones de palabras son largas y cortas prohibidas? Debería poder usar la combinatoria para resolver esto, pero necesita el algoritmo o las reglas de verificación de la contraseña para saber cuánto limita el tamaño del espacio de la contraseña.
Además, prácticamente cualquier combinación de palabras también será una secuencia de "todos los caracteres", ¿así que básicamente lo eliminó o el sistema está comprobando sustituciones obvias, como "passw0rd"?