Hay dos oraciones que dicen esto:
1) Los algoritmos y las estructuras de datos son una parte importante de la programación.
2) La programación son algoritmos y estructuras de datos, y los algoritmos y las estructuras de datos son el alma de la programación.
Tenga en cuenta que esto no es lo que dije, fue resumido por innumerables programadores. Incluye tres algoritmos de cifrado simétrico: DES, 3DES y AES, y está lleno de información práctica.
1. Algoritmo de contraseña simétrica
El algoritmo de criptografía simétrica es el algoritmo de cifrado más utilizado y más utilizado hoy en día. No solo se usa en la industria del software, sino también popular en la industria del hardware. Todo tipo de infraestructuras darán prioridad a los algoritmos de cifrado simétrico siempre que involucren necesidades de seguridad.
La clave de cifrado y la clave de descifrado del algoritmo de criptografía simétrica son la misma para la mayoría de los algoritmos de criptografía simétricos, el proceso de cifrado y descifrado está inversamente relacionado.
(1) Cifrar y descifrar el modelo de comunicación
(2) Características: algoritmo abierto, volumen de cálculo pequeño, velocidad de cifrado rápida, alta eficiencia de cifrado
(3) Debilidad: ambas partes usan la misma clave, y la seguridad no está garantizada
Hay dos tipos de contraseñas simétricas: transmitir contraseña y contraseña de paquetes, pero ahora la contraseña de bloque se usa comúnmente:
(4) Bloquear el modo de trabajo de contraseña
1) BCE: Cipherbook electrónico (el más comúnmente utilizado, cada cifrado genera paquetes de texto cifrado independientes y no afectará a otros paquetes de texto cifrado, es decir, el mismo texto sin formato se genera después del cifrado)
2) CBC: enlace de texto cifrado (comúnmente utilizado. Antes del cifrado de texto sin formato, debe realizar una operación XOR con el texto cifrado anterior, es decir, se generan diferentes textos cifrados después del mismo cifrado de texto sin formato)
Además de estos dos modos de trabajo comúnmente utilizados, hay:
3) CFB: comentarios de contraseña
4) OFB: retroalimentación de salida
5) CTR: contador
Estos cinco modos de trabajo se aplican principalmente por algoritmos en criptografía al realizar cálculos de derivación.
6. Cómo llenar las contraseñas de bloque
1) Nopadding: sin relleno
2) PKCS5Padding:
3) ISO10126 Padding:
7. Contraseñas simétricas comúnmente utilizadas:
1) DES (estándar de cifrado de datos, estándar de cifrado de datos)
2) 3Des (triple des, desede, algoritmo de cifrado triple des)
3) AES (Estándar de cifrado avanzado, Estándar de cifrado de datos avanzados, el algoritmo AES puede resistir efectivamente los algoritmos de ataque contra DES)
Primero echemos un vistazo a una comparación simple de estos tres algoritmos:
| algoritmo | Longitud de llave | Longitud de la tecla predeterminada | Modo de trabajo | Método de llenado |
|---|---|---|---|---|
| Desesperación | 56 | 56 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126padding |
| 3DES | 112, 168 | 168 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126padding |
| AES | 128, 192, 256 | 128 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126padding |
Veamos cómo usar tres algoritmos de DES/3DES/AES para implementar el cifrado simétrico:
2. Des algoritmo
1.DES: Estándar de cifrado de datos, un algoritmo típico en el campo de los algoritmos de cifrado simétrico
2. Características: la clave es corta (56 bits), ciclo de vida corto (evitando grietas)
3. Implementación de Java
1) Generar una llave
KeyGenerator keyGen = keyGenerator.getInStance ("DES"); // Generador clave KeyGen.init (56); // Inicializar el generador de teclas SecretKey SecretKey = KeyGen.GeneralEkey (); // Generar Key Byte [] Key = SecretKey.getEncoded (); // Key Byte Array2) cifrado
SecretKey SecretKey = new SecretKeySpec (Key, "DES"); // Recuperar la clave Cipher Cipher = cipher.getInstance ("DES"); // Cipher completa el cifrado o descifrado la clase de trabajo cipher.init (cipher.encrypt_mode, secretkey); // inicializa ciphere [] cipheryte3) descifrado
SecretKey SecretKey = new SecretKeSpec (KEY, "DES"); // Recuperar Cipher Cipher = cipher.getInstance ("DES"); // Cipher completa el cifrado o descripta la clase de trabajo cipher.init (cipher.decrypt_mode, secretkey); // inicializa ciper en modo de trabajo byte [] ciphery). datosPodemos encontrar que acabamos de establecer diferentes modos para cifrado y descifrado.
Algoritmo de 3.3Des
1.3Des: Aumente la longitud de la clave a 112 o 168 bits y mejore la seguridad al aumentar el número de iteraciones.
2. Desventajas: velocidad de procesamiento lenta, tiempo de cálculo clave largo y baja eficiencia de cifrado
3. Implementación de Java
1) Generar una llave
KeyGenerator keyGen = keyGenerator.getInstance ("desede"); // Key Generator KeyGen.init (168);/La longitud de clave se puede especificar como 112 o 168, y el valor predeterminado es 168.2) Cifrado 3DES
SecretKey SecretKey = new SecretKeSpec (Key, "Desede"); // Recuperar Cipher Cipher = Cipher.getInstance ("Desede"); // Cipher Completa Cifrado o descifrado de la clase de trabajo Cipher.init (cipher.encrypt_mode, SecretKey); // Inicializa el modo Cipher). s datos3) descifrado de 3Des
SecretKey SecretKey = new SecretKeSpec (Key, "Desede"); // Recuperar Cipher Cipher = cipher.getInstance ("desede"); // cipher complete cifrado o descryción de la clase de trabajo cipher.init (cipher.decrypt_mode, secretkey); // inicializa cipher) datos de PTS4. Algoritmo AES (recomendado)
1.AES: Estándar de cifrado de datos avanzados, capaz de resistir de manera efectiva todos los ataques conocidos contra los algoritmos DES
2. Características: tiempo de establecimiento clave corto, buena sensibilidad, bajos requisitos de memoria y alta seguridad
3. Implementación de Java
1) Generar una llave
KeyGenerator keyGen = keyGenerator.getInstance ("AES"); // Key Generator KeyGen.init (128) ;/2) Cifrado AES
SecretKey SecretKey = new SecretKeSpec (Key, "AES"); // Recuperación clave Cipher Cipher = Cipher.getInstance ("AES"); // Cipher Completa Cifrado o descifrado de la clase de trabajo Cipher.init (cipher.encrypt_mode, secretkey); // inicializa cipher). s datos3) descifrado de AES
SecretKey SecretKey = new SecretKeSpec (Key, "AES"); // Recuperar Cipher Cipher = cipher.getInstance ("AES"); // Cipher Completa Cifrado o descripción de la clase de trabajo Cipher.init (cipher.decrypt_mode, secretkey); // cipher) datos de PTSPara conveniencia de uso, tengo clases de herramientas escritas para algoritmos DES/3DES/AES, dirección: Dirección de descarga (nueva clase de herramienta DES/3DES/AES).
En este punto, los tres algoritmos de DES/3DE/AES se realizan para implementar el cifrado simétrico. Espero que sea útil para el aprendizaje de todos, y espero que todos apoyen más a Wulin.com.