¿Cómo saber si la contraseña de un usuario es segura?

Haga clic a continuación para seguirme y luego haga clic en... "Establecer como estrella" en la esquina superior derecha para recibir actualizaciones lo antes posible ~~~

Las contraseñas débiles establecidas por los usuarios generarán problemas de seguridad de la información. Generalmente, los sistemas requieren contraseñas seguras. El artículo de hoy le presentará cómo utilizar una expresión regular para determinar si la contraseña del usuario es una contraseña segura.

1. Presente el proceso de uso de expresiones regulares en desarrollo:

1. Analizar las características de los datos que se compararán y simular varios datos de prueba;

2. Utilice herramientas habituales para escribir expresiones regulares y combínelas con datos de prueba para verificar la expresión regular que escribió;

3. Llame a la expresión regular que se ha verificado en la herramienta normal del programa.

2. Cómo utilizar expresiones regulares en Java

Las clases relacionadas con la regularidad en Java se encuentran en el paquete java.util.regex y se utilizan dos clases principales, de la siguiente manera:

378a4bd16b2a7e005c4773c43b71fd92.png

Clase de patrón:

El patrón es una representación compilada de una expresión regular de expresión regular.

daeb4c80f428a00ddc1114ab166ed309.png

Clase de emparejamiento:

Un motor que realiza operaciones de coincidencia en la entrada de la cadena de entrada interpretando el patrón

3f4acc750177523a7adbd5224d93849f.png

Nota: En el código Java, el carácter de escape "\" debe escribirse como "\\" para representar un "\".

Por ejemplo, regex=\d debe escribirse como "\\d" en código Java.

3. La siguiente es una captura de pantalla de la página de registro de JD: Tomando el registro de JD como ejemplo, JD recomienda utilizar una combinación de letras, números y símbolos, de 6 a 20 caracteres.

9cbbb2be4d488fa3a0939b17f5b7ae80.png

A continuación, utilizamos expresiones regulares para verificar si la contraseña ingresada por el usuario cumple con las reglas de contraseña.

Primero analice los requisitos de contraseña, de la siguiente manera:

1. La contraseña incluye tres tipos de caracteres: letras, números y símbolos.

2. Debe contener 2 o más caracteres

3. Longitud de la contraseña de 6 a 20 caracteres

Las letras incluyen: A-Za-z , los números incluyen: 0-9 ,

Los símbolos incluyen 32: `-=\][';/.,~!@#$%^&*()_+|}{":?>< 

Cabe señalar que si se utilizan 32 símbolos, los caracteres especiales "\" , "[ " y "] " deben escaparse. Por simplicidad e intuición, asumimos que solo hay 3 símbolos @#$ .

Un análisis más detallado muestra que la contraseña solo tiene tres tipos de caracteres: letras, números y símbolos. Se requiere que contenga 2 o más tipos. Luego hay 4 tipos de combinaciones de contraseña (seleccione 2 de 3 + seleccione todos 3 = 4 ), eso es:

Letras + números, letras + símbolos, números + símbolos, letras + números + símbolos.

Si pensamos en este problema desde el principio, será difícil escribir expresiones regulares, por lo que pensamos desde el lado negativo: lo opuesto a "debe contener 2 o más tipos" es "sólo contiene 1 tipo", lo que significa que el requisito de contraseña "no puede contener solo 1 tipo "carácter " .

La longitud de la contraseña es de 6 a 20 caracteres. Debe utilizar la marca de inicio "^" y la marca de final "$" , y el cuantificador {6,20}

Los requisitos de contraseña del análisis final son:

La contraseña debe tener entre 6 y 20 caracteres de principio a fin y no puede ser toda de un solo carácter.

Por tanto la expresión regular se puede escribir así:

expresión regular= ^(?![A-Za-z]+$)(?![0-9]+$)(?![@#$]+$)[A-Za-z0-9@#$] {6,20}$

explicar:

^ (?![A-Za-z]+$) significa que no pueden ser todas las letras de principio a fin

^ (?![0-9]+$) significa que no pueden ser todos los números de principio a fin

^ (?![@#$]+$) significa que no pueden ser todos los símbolos @#$ de principio a fin

^[A-Za-z0-9@#$]{6,20}$ significa que solo puede ser una colección de símbolos alfanuméricos @#$ de principio a fin

Cabe señalar que el carácter inicial "^" y la búsqueda previa "(?!)" tienen ancho cero e indican la posición, por lo que el carácter inicial "^" solo debe escribirse al comienzo de todo el carácter regular. expresión.

Si no comprende esto, lea el contenido relevante de "Aprendiendo la gramática de las expresiones regulares en un artículo" .

Finalmente, sustituimos la expresión analizada en código Java para completar la función. Tenga en cuenta que en Java, las barras invertidas deben tener carácter de escape, es decir, un guión se convierte en dos guiones.

efb079594cdd10e77ed2172ab7d05c28.png

El resultado final es el siguiente:

c2581aaa5126c2027fe9d0cefa587f43.png

En este punto, se ha introducido todo el contenido de las expresiones regulares. Creo que ya tiene la capacidad de desarrollar expresiones regulares. Si desea obtener el código fuente anterior, responda con la palabra clave "código fuente de expresión regular" en segundo plano. para obtenerlo.

Recomiende una herramienta normal " RegexBuddy " para obtener la palabra clave " expresión regular " en segundo plano.

Acho que você gosta

Origin blog.csdn.net/z123456789XDW/article/details/133153186
Recomendado
Clasificación