Varios algoritmos básicos para el cifrado de transferencias de archivos
Presenta la situación básica del algoritmo de cifrado MD5. El nombre completo de MD5 es Algoritmo 5 de resumen de mensajes. Fue inventado por el Laboratorio de Ciencias de la Computación del MIT y RSA Data Security Company a principios de la década de 1990 y desarrollado a partir de MD2, MD3 y MD4.
El resumen de mensajes (Message-Digest) generalmente se refiere a la transformación hash del mensaje, es decir, convertir una cadena de bytes de cualquier longitud en un número entero grande de cierta longitud. Tenga en cuenta que utilizo el término "cadena de bytes" en lugar de "cadena" porque esta conversión solo se relaciona con valores de bytes y no con el juego de caracteres o el método de codificación.
MD5 convierte "cadenas de bytes" de cualquier longitud en enteros grandes de 128 bits. Es un algoritmo de conversión de cadenas irreversible. En otras palabras, incluso si ve el programa fuente y la descripción del algoritmo, no puede convertir el valor MD5 a la cadena original. Matemáticamente hablando, es porque hay infinitas cadenas primitivas, lo cual es un poco como una función matemática sin una función inversa.
Una aplicación típica de MD5 es generar huellas digitales para mensajes (cadenas de bytes) para evitar que sean manipulados. Por ejemplo, si escribe un párrafo en un archivo llamado readme.txt, genera un valor MD5 para este readme.txt y lo registra, puede difundir este archivo a otros. Si alguien más modificó algo en el archivo, lo encontrará cuando vuelva a calcular el MD5 del archivo. Si existe una autoridad de certificación de terceros, MD5 también puede evitar el "repudio" del autor del documento, que es la llamada aplicación de firma digital.
MD5 también se utiliza ampliamente en tecnología de cifrado y descifrado. En muchos sistemas operativos, la contraseña del usuario se guarda como un valor MD5 (u otros algoritmos similares). Cuando un usuario inicia sesión, el sistema calcula la contraseña ingresada por el usuario como un valor MD5 y luego la compara con el valor MD5 guardado en el sistema, pero el sistema no "sabe" cuál es la contraseña del usuario.
El método que utilizan algunos piratas informáticos para descifrar dichas contraseñas es un método llamado "ejecutar el diccionario". Hay dos formas de obtener un diccionario, una es una colección diaria de tablas de cadenas utilizadas como contraseñas y la otra se genera mediante un método de permutación y combinación. Primero, los valores MD5 de estos elementos del diccionario se calculan a través del programa MD5 y luego se busca el valor MD5 del objetivo en el diccionario.
Incluso si la longitud máxima de la contraseña es 8, y la contraseña solo puede contener letras y números, ***26 26 10 = 62 caracteres, el número de entradas en el diccionario también es P (62 , 1) P(62,2)...P(62,8).
La gestión de cuentas de usuario es una de las funciones básicas más utilizadas en muchas aplicaciones comunitarias y de comercio electrónico. Aunque muchos servidores de aplicaciones proporcionan estos componentes básicos, muchos desarrolladores de aplicaciones prefieren utilizar una base de datos relacional para administrar usuarios y lograr una mayor flexibilidad de administración. El enfoque perezoso es que la contraseña del usuario generalmente se almacena directamente en la base de datos en texto sin formato o después de una simple transformación. Por lo tanto, las contraseñas de estos usuarios no son secretas para los desarrolladores de software ni para los administradores de sistemas. El propósito de este artículo es presentar la implementación de MD5 Java Bean y dar un ejemplo del uso de MD5 para procesar contraseñas de cuentas de usuario. Este enfoque evita que los administradores y programadores vean la contraseña de un usuario, aunque pueden inicializarla. Pero el punto importante es proteger los hábitos de configuración de contraseñas de los usuarios.
La descripción JAVA del algoritmo de cifrado MD es:
Importar seguridad Java.*;
Importar Java.security.spec.*;
Clase Md5 {
Cadena estática final pública MD5 (cadena s) {
dígitos hexadecimales de caracteres【】= {
"0"," 1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d" , "e", "f"};
Pruebe {
byte[]strTemp = s.getbytes();
resumen del mensaje MD temp = mensaje digest.getinstance("MD5");
MD temp.update(strTemp);
byte[]MD = MD temp.digest();
int j = md.length
char str【】= new char【j * 2】;
int k = 0
for(int I =; 0;iltj;i) {
byte byte 0 = MD[I];
str[k]= dígitos hexadecimales[byte 0 gt; >
str[k]; p>
str[k]= dígitos hexadecimales[byte 0 amp 0xf];
}
Devuelve una nueva cadena (str; );
}
Capturar (Excepción e) {
Devolver nulo
}
} p>
Public static void main (String【】args){
system out . >