Colección de citas famosas - Colección de versos - Métodos de cifrado comunes y aplicaciones en desarrollo

Métodos de cifrado comunes y aplicaciones en desarrollo

Métodos de cifrado comunes y aplicaciones en desarrollo

1. base64

Breve descripción: Base64 es el método de cifrado más común utilizado para transmitir código de bytes de 8 bits en Internet. Uno de los métodos de codificación, Base64, es un método para representar datos binarios basado en 64 caracteres imprimibles. Todos los datos pueden codificarse como archivos de texto y representarse utilizando solo 65 caracteres. (65 caracteres: A~Z a~z 0~9 / =) Los datos codificados ~= 4/3 de los datos antes de la codificación, que serán aproximadamente 1/3 más grandes (la imagen convertida al formato base64 será más grande que la imagen original).

Aplicación: la codificación Base64 es un proceso de binario a caracteres y se puede utilizar para transmitir información de identificación más larga en un entorno HTTP. Por ejemplo, en el sistema Hibernate de Java Persistence, Base64 se usa para codificar un identificador único largo (generalmente un UUID de 128 bits) en una cadena, que se usa como parámetros en formularios HTTP y URL GET HTTP. En otras aplicaciones, a menudo es necesario codificar datos binarios en un formato adecuado para colocarlos en una URL (incluidos los campos de formulario ocultos). En este momento, la codificación Base64 es ilegible y es necesario decodificarla antes de poder leerla.

Línea de comando para codificación y decodificación Base64

Codificación: base64 123.png -o 123.txt

Decodificación: base64 123.txt -o test.png -D Principio de codificación Base64

Principio:

1) Convertir todos los caracteres en códigos ASCII

2) Convertir códigos ASCII en binarios de 8 bits

p>

3) Agrupe 3 números binarios en un grupo (si hay menos de 3, agregue 0 al final) a 24 bits, y luego divídalos en 4 grupos, cada grupo tiene 6 bits

4) Agregue uniformemente dos 0 delante del binario de 6 dígitos para formar 8 dígitos

5) Convierta el binario después de agregar 0 a decimal

6) Obtenga de la tabla de codificación Base64 la codificación Base64 correspondiente al decimal;

Descripción de la codificación Base64:

a. Al convertir, coloque tres bytes de datos en un búfer de 24 bits, primero. byte ocupa la posición alta.

b. Si los datos tienen menos de 3 bytes, los bits restantes en el búfer se llenarán con ceros. Luego, se extraen 6 bits cada vez y el carácter correspondiente se selecciona como salida codificada de acuerdo con su valor en la tabla de búsqueda.

c. Continúe hasta que se conviertan todos los datos de entrada.

d. Si quedan dos datos de entrada al final, agregue "=" después del resultado de la codificación

e. "=" después del resultado de la codificación 2 "=";

f. Si no quedan datos, no agregue nada para garantizar la precisión de la restauración de los datos.

2. Cifrado HASH/función hash unidireccional

Breve descripción: Lo especial del algoritmo Hash es que es un algoritmo unidireccional. Los usuarios pueden generar información de destino a través. el algoritmo Hash Un valor Hash único de una longitud específica (32 caracteres), pero la información del objetivo no se puede recuperar a través de este valor Hash. Para los mismos datos, el texto cifrado después del cifrado es el mismo. Los algoritmos Hash comunes incluyen MD5 y SHA. Dado que el resultado del cifrado es fijo, básicamente el cifrado hash original ya no es seguro, por lo que se derivó el método de sal. Salado: primero empalme los datos originales en una cadena fija y luego realice el cifrado MD5.

Características:

1) La longitud del texto cifrado cifrado es fija (32 caracteres de texto cifrado)

2) Si el texto sin formato es diferente, entonces el hash los resultados deben ser diferentes

3) Si el texto sin formato es el mismo, entonces el texto cifrado debe ser el mismo (si los mismos datos están cifrados, el texto cifrado será el mismo)

4) Todos los algoritmos de cifrado son públicos

5) El cálculo inverso no es posible (el texto sin formato no se puede deducir del texto cifrado), pero se puede descifrar violentamente y controlar las colisiones

Principio : El algoritmo de resumen de mensajes MD5 pertenece a la categoría de algoritmo Hash. El algoritmo MD5 opera con un mensaje de entrada de cualquier longitud y produce un resumen del mensaje de 128 bits.

1) Relleno de datos

Llene el mensaje con datos de modo que la longitud del mensaje módulo 512 sea 448. Suponga que la longitud del mensaje es X, es decir, X mod 512 =448 está satisfecho. Según esta fórmula, se obtiene la longitud de los datos que deben completarse.

Método de llenado: relleno después del mensaje, llenando el primer bit con 1 y el resto con 0.

2) Agregar longitud de información

Después del resultado del primer paso, complete la longitud del mensaje original. La longitud de almacenamiento disponible es de 64 bits. Si la longitud del mensaje es mayor que 264, solo se utilizan los 64 bits inferiores, es decir (la longitud del mensaje es módulo 264).

Una vez completado este paso, la longitud final del mensaje es un múltiplo entero de 512.

3) Procesamiento de datos

Preparar los datos necesarios:

4 constantes: A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476 <; /p>

4 funciones: F (X, Y, Z) = (X amp; Y) ((~X) amp; Z); | (Y amp; (~Z)); H(X, Y, Z)=X ^ Y ^ Z;

Divide el mensaje en grupos de 512 bits para su procesamiento. Calcule la transformación usando las 4 constantes mencionadas anteriormente como variables iniciales y vuelva a generar las 4 variables en función de estas 4 variables y luego realice la siguiente operación de agrupación. Si es la última agrupación, estas cuatro variables son el resultado final. es el valor MD5.

3. Cifrado simétrico

Algoritmo clásico:

1) Estándar de cifrado de datos DES

Hay tres parámetros de entrada para el algoritmo DES : Clave, Datos, Modo. La clave es de 8 bytes a 64 bits, que es la clave de trabajo del algoritmo DES; los datos también son de 8 bytes y 64 bits, que son los datos que se cifrarán o descifrarán. El modo es el modo de trabajo de DES, y hay; dos tipos: cifrado o descifrado.

El algoritmo DES funciona así: si el modo es cifrado, utilice la clave para cifrar los datos y genere la forma de contraseña de datos (64 bits) como resultado de salida de DES; si el modo es descifrado, entonces; Utilice la clave para descifrar los datos en forma de contraseña y restaurarlos a la forma simple de Datos (64 bits) como resultado de salida de DES. En ambos extremos de la red de comunicación, ambas partes acuerdan una clave consistente, usan la clave para cifrar DES los datos centrales en el punto de origen de la comunicación y luego los transmiten al punto final de la red de comunicación en forma de un contraseña en la red de comunicación pública (como la red telefónica), después de que los datos llegan al destino, se utiliza la misma clave para descifrar los datos cifrados y los datos principales se reproducen de forma clara. De esta forma, se garantiza la seguridad y confiabilidad de la transmisión de datos centrales (como PIN, MAC, etc.) en la red de comunicación pública.

2) 3DES utiliza 3 claves para realizar (clave 1·cifrado) (clave 2·descifrado) (clave 3·cifrado)

3) Estándar de cifrado avanzado AES

Como se muestra en la imagen, el cifrado/descifrado utiliza la misma contraseña y es reversible

4. Cifrado asimétrico

Características:

1) Utilice el clave pública para cifrado y clave privada para descifrado

2) La clave pública es pública y la clave privada es confidencial

3) El proceso de cifrado es seguro, pero el rendimiento es extremadamente pobre

Algoritmo clásico RSA:

1) Principio RSA

(1) Para encontrar N, prepare dos números primos p y q, N = p x q

(2) Encuentre L, L es el mínimo común múltiplo de p-1 y q-1. L = mcm(p-1, q-1)

(3) Encuentre E. El máximo común divisor de E y L es 1 (E y L son primos relativos)

(4) Buscar D, E p>

Se requiere una verificación estricta de la información de identidad del remitente

2) Principio de firma digital

(1) Procesamiento del cliente

Procesamiento del "mensaje" HASH obtiene el "resumen del mensaje"

El remitente utiliza su propia clave privada para cifrar el "resumen del mensaje" (firma digital)

Adjuntar la firma digital al final del "mensaje" y enviarlo juntos al receptor

(2) Procesamiento del lado del servidor

Hash del "mensaje" para obtener el "resumen del mensaje" "

Usa la clave pública para descifrar la "firma digital"

Coincide con los resultados

6. Certificado digital

Breve descripción:

El certificado es muy similar a la licencia de conducir. Contiene el nombre, información personal como la organización y la dirección, así como la clave pública de esta persona, y una autoridad certificadora impone una firma digital. Siempre que veamos el certificado de clave pública, podremos saber que la autoridad de certificación ha certificado que la clave pública efectivamente pertenece a esta persona.

Contenido del certificado digital:

1) Clave pública

2) Firma digital de la autoridad certificadora

Pasos de generación del certificado:

p>

1) Generar clave privada openssl genrsa -out private.pem 1024

2) Crear solicitud de certificado openssl req -new -key private.pem -out rsacert.csr

3) Generar y firmar el certificado, válido por 10 años openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

4) Convertir el archivo en formato PEM a Formato DER openssl x509 -outform der -in rsacert.crt -out rsacert.der

5) Exportar archivo P12 openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

Notas en el desarrollo de iOS:

1) En el desarrollo de iOS, el certificado en formato PEM no se puede usar directamente porque está codificado en Base64 internamente. Se debe usar el certificado DER, que está en formato binario. ;

2) OpenSSL genera certificados en formato PEM de forma predeterminada.

7. https

La diferencia entre HTTPS y HTTP:

El protocolo HTTP del Protocolo de transferencia de hipertexto se utiliza para transferir información entre navegadores web y servidores de sitios web. El protocolo HTTP envía contenido en texto claro y no proporciona ningún tipo de cifrado de datos. Si un atacante intercepta el mensaje de transmisión entre el navegador web y el servidor del sitio web, puede leer directamente la información que contiene. Adecuado para transmitir algunos datos sensibles, como números de tarjetas de crédito, contraseñas, etc.

Para solucionar esta deficiencia del protocolo HTTP, es necesario utilizar otro protocolo: Secure Socket Layer Hypertext Transfer Protocol HTTPS. Para la seguridad de la transmisión de datos, HTTPS agrega el protocolo SSL a HTTP. SSL se basa en certificados para verificar la identidad del servidor y cifrar la comunicación entre el navegador y el servidor.

Las principales diferencias entre HTTPS y HTTP son los siguientes cuatro puntos:

1) El protocolo https requiere que solicites un certificado de CA. Generalmente, hay muy pocos certificados gratuitos. y tienes que pagar una tarifa.

2) http es un protocolo de transferencia de hipertexto y la información se transmite en texto sin formato, mientras que https es un protocolo de transmisión cifrado SSL seguro.

3) http y https usan métodos de conexión completamente diferentes y usan diferentes puertos. El primero es 80 y el segundo es 443.

4) La conexión http es muy simple y sin estado; el protocolo HTTPS es un protocolo de red creado a partir del protocolo SSL HTTP que puede realizar transmisión cifrada y autenticación de identidad, y es más seguro que el protocolo http.

5) SSL: Capa de conexión segura; utilizando tecnología de cifrado de datos (Encryption), puede garantizar que los datos no sean interceptados ni interceptados durante la transmisión en la red. El estándar general actual es el estándar de seguridad de 40 bits, y Estados Unidos ha introducido un estándar de seguridad más alto de 128 bits, pero las exportaciones están restringidas. Siempre que I.E. o el navegador Netscape versión 3.0 o superior admitan SSL. La versión actual es 3.0. El protocolo SSL se encuentra entre el protocolo TCP/IP y varios protocolos de capa de aplicación, proporcionando soporte de seguridad para la comunicación de datos. El protocolo SSL se puede dividir en dos capas: Protocolo de registro SSL: se basa en un protocolo de transmisión confiable (como TCP) y brinda soporte para funciones básicas como encapsulación, compresión y cifrado de datos para protocolos de alto nivel. Protocolo de protocolo de enlace SSL: se basa en el protocolo de registro SSL y se utiliza para la autenticación de identidad, la negociación de algoritmos de cifrado y el intercambio de claves de cifrado entre las partes que se comunican antes de que comience la transmisión de datos real.