Colección de citas famosas - Colección de poesías - Algunos cifrados comunes en Android ((cifrado simétrico DES, AES), cifrado asimétrico (RSA), MD5)

Algunos cifrados comunes en Android ((cifrado simétrico DES, AES), cifrado asimétrico (RSA), MD5)

DES es un algoritmo de cifrado simétrico El llamado algoritmo de cifrado simétrico es un algoritmo que utiliza la misma clave para el cifrado y descifrado. El algoritmo de cifrado DES surgió de la investigación de IBM.

Posteriormente fue adoptado oficialmente por el gobierno de los EE. UU. y comenzó a circular ampliamente. Sin embargo, se ha utilizado cada vez menos en los últimos años porque DES utiliza un 56-. clave de bits y con potencia informática moderna,

Puede descifrarse en 24 horas

Proceso de llamada

Recientemente, probé muchos métodos para descifrar el subprograma WeChat para obtener la información del número de teléfono móvil vinculada al usuario. Aunque al final no se resolvió del todo, llegó a mi límite. A veces se informa un error: javax.crypto.BadPaddingException: bloque de pad dañado.

Descripción detallada del error

Cada vez que ingresa por primera vez al mini programa para iniciar sesión y obtener un número de teléfono móvil, habrá el problema de que el primer descifrado falla y tiene éxito después de volver a intentarlo. Si cierra sesión e inicia sesión continuamente, ya no se producirá el problema de no revelar el secreto. Sin embargo, si detiene la operación por un tiempo, cierra sesión y luego inicia sesión, habrá un problema en el que el primer intento de revelar el secreto falla, pero tiene éxito cuando lo intenta nuevamente.

He excluido todos los puntos mencionados en Internet y los documentos oficiales. El texto cifrado cifrado obtenido se llama al método wx.login () en el front-end y llama a mi interfaz de autorización WeChat de back-end para obtener la clave de sesión del usuario y openId. Luego, el front-end llama a la interfaz para obtener el teléfono móvil del usuario. Número cifrado por la clave de sesión, por lo que se puede garantizar que la clave de sesión sea la última en todo momento. No caducará.

Y descubrí a través del registro que cuando la clave de sesión permaneció sin cambios, la primera vez falló, pero la segunda vez el descifrado fue exitoso.

Algoritmo de cifrado, RSA es un tema ineludible, porque el algoritmo RSA es actualmente el algoritmo de clave pública más popular y se puede utilizar tanto para cifrado como para firmas digitales de usuarios. No sólo se utiliza en el campo de las criptomonedas, sino que también se utiliza ampliamente en el campo tradicional de Internet. Ha pasado por varias pruebas durante más de 20 años desde que se propuso y, en general, se considera uno de los mejores esquemas de clave pública en la actualidad

La característica del algoritmo de cifrado asimétrico es que la clave de cifrado y la clave de descifrado son diferentes. La clave secreta se divide en una clave pública y una clave privada cifrada con la clave privada solo se puede descifrar con la clave pública.

1. ¿Qué es un "número primo"?

Un número primo es un número entero que no se puede expresar como el producto de otros dos números enteros excepto él mismo y 1.

2. ¿Qué es un "número coprimo"? coprimo”)?

Los libros de texto de matemáticas de la escuela primaria definen los números primos recíprocos de la siguiente manera: "Dos números cuyo factor común es sólo 1 se llaman números primos recíprocos

(1) Dos números primos deben ser números primos recíprocos Por ejemplo, 2 y 7, 13 y 19.

(2) Si un número primo no puede dividir a otro número compuesto, los dos números son coprimos. Por ejemplo, 3 y 10, 5 y 26.

(3) 1 no es un número primo ni un número compuesto. Es coprimo con cualquier número natural. Por ejemplo, 1 y 9908.

(4) Dos números naturales adyacentes son coprimos. números como 15 y 16.

(5) Dos números impares adyacentes son números coprimos.

(6) Los números grandes son dos números primos. Como 97 y 88.

(7) Los decimales son números primos, y dos números que no son múltiplos del decimal son números coprimos. Como el 7 y el 16.

(8) Ambos números son números compuestos (la diferencia entre los dos números es grande), y todos los factores primos del decimal no son divisores del número grande. Los dos números son coprimos. Por ejemplo, 357 y 715, 357 = 3 × 7 × 17 y 3, 7 y 17 no son divisores de 715. Estos dos números son primos relativos. etc.

3. ¿Qué es la operación exponencial modular?

Todo el mundo conoce la aritmética exponencial. No hace falta decir que hablemos primero de la aritmética modular. La aritmética de módulo es una aritmética de enteros. Hay un número entero m, y la aritmética de módulo se realiza utilizando n como módulo, es decir, m mod n. ¿Cómo? Sea m dividido por n y solo tome el resto como resultado, lo que se llama operación modular. Por ejemplo, 10 mod 3=1; 26 mod 6=2; 28 mod 2 =0 y así sucesivamente.

La operación exponencial modular consiste en realizar primero la operación exponencial, tomar el resultado y luego realizar la operación modular. Como (5^3) mod 7 = (125 mod 7) = 6.

Entre ellos, el símbolo ^ representa la operación matemática exponencial; mod representa la operación modular, es decir, división y resto. Los pasos específicos del algoritmo son los siguientes:

(1) Seleccione un par de números primos pyq diferentes y suficientemente grandes.

(2) Calcular n=p q.

(3) Calcule f(n)=(p-1) (q-1), manteniendo pyq estrictamente confidencial y sin dejar que nadie lo sepa.

(4) Encuentre un número e que sea primo relativo con respecto a f(n) como exponente de clave pública, y 1lt;elt;f(n).

(5) Calcule el índice de clave privada d para que d satisfaga (d*e) mod f(n) = 1

(6) Clave pública KU=(e, n ), clave privada KR=(d, n).

(7) Al cifrar, primero convierta el texto sin formato en un número entero M de 0 a n-1. Si el texto sin formato es largo, primero se puede dividir en grupos apropiados y luego intercambiar. Suponiendo que el texto cifrado es C, el proceso de cifrado es: C=M^e mod n.

(8) El proceso de descifrado es: M=C^d mod n.

En las aplicaciones de criptografía RSA, la clave pública KU es pública, es decir, los valores de e y n pueden ser obtenidos por terceros espías. El problema de descifrar la contraseña RSA es encontrar el valor de d a partir de los valores conocidos de e y n (n es igual a pq), de modo que se pueda obtener la clave privada para descifrar el texto cifrado. De la fórmula anterior: (d e) mod ((p-1) (q-1)) = 1, podemos ver que el problema esencial del descifrado de contraseñas es encontrar (p-1) a partir de los valores de p q y (p-1). En otras palabras, simplemente encontrando los valores de p y q, podemos encontrar el valor de d y obtener la clave privada.

Cuando pyq son números primos grandes, es un problema matemático reconocido descomponer los factores pyq a partir de su producto p q. Por ejemplo, cuando p*q tiene un tamaño tan grande como 1024 bits, hasta ahora nadie ha podido utilizar ninguna herramienta informática para completar la tarea de factorización. Por lo tanto, han pasado casi veinte años desde que se propuso RSA. Ha experimentado varios ataques y gradualmente ha sido aceptado por la gente. En general, se lo considera uno de los mejores esquemas de clave pública en la actualidad.

Desventaja 1: aunque la seguridad de RSA se basa en la factorización de números grandes, no se ha demostrado teóricamente que la dificultad de descifrar RSA sea equivalente a la dificultad de factorizar números grandes. Es decir, el principal defecto de RSA es que es imposible comprender teóricamente su desempeño en materia de confidencialidad.

Muchas veces en el desarrollo de Android. Para garantizar la seguridad de la cuenta del usuario, al guardar la contraseña del usuario se suele utilizar el algoritmo de cifrado MD5. Este algoritmo es irreversible y tiene un cierto grado de seguridad.

MD5 no es un algoritmo de cifrado, porque. si el propósito es el cifrado, una condición que se debe cumplir es que se pueda descifrar después del cifrado.

Sin embargo, MD5 no puede restaurar los datos originales del resultado.

MD5 es solo un algoritmo hash