"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo cifrar de forma segura contraseñas en archivos de configuración con Java?

¿Cómo cifrar de forma segura contraseñas en archivos de configuración con Java?

Publicado el 2024-11-17
Navegar:779

How to Securely Encrypt Passwords in Configuration Files with Java?

Cómo cifrar contraseñas de forma segura en archivos de configuración

Cifrar contraseñas almacenadas en archivos de configuración es crucial para salvaguardar datos confidenciales y evitar el acceso no autorizado.

Uso Cifrado basado en contraseña (PBE) en Java

Un método simple y eficaz para cifrar y descifrar contraseñas es utilizar el cifrado basado en contraseña (PBE) de Java. PBE le permite derivar una clave de una contraseña usando un algoritmo seguro, como PBKDF2WithHmacSHA512.

Pasos de implementación

  1. Generar un Salt: Crear un salt aleatorio para hacer que los ataques de fuerza bruta sean más desafiantes.
  2. Obtenga la clave de cifrado: Use SecretKeyFactory para derivar una clave AES a partir de la contraseña y salt usando el algoritmo PBKDF2WithHmacSHA512.
  3. Cifrar la contraseña: Inicializar un cifrado con el algoritmo AES/CBC/PKCS5Padding y cifrar la contraseña usando la clave derivada.
  4. Almacenar la contraseña cifrada: Almacenar la contraseña cifrada junto con el salt en el archivo de configuración.
  5. Descifre la contraseña: Al leer del archivo, cree una instancia de Cipher con el mismo algoritmo y clave, descifre la contraseña usando el salt y obtenga el texto sin formato original.

Código de ejemplo

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

// ...

SecretKeySpec key = createSecretKey(password.toCharArray(), salt, iterationCount, keyLength);
String encryptedPassword = encrypt(originalPassword, key);
// ...
String decryptedPassword = decrypt(encryptedPassword, key);

Almacenamiento de la contraseña de cifrado

Queda un desafío: dónde almacenar la contraseña utilizada para el cifrado. Las opciones incluyen:

  • Ocultar en el archivo fuente: Almacenar la contraseña en el código fuente y ofuscarla para que sea más difícil de recuperar.
  • Proporcionar como propiedad del sistema: Pase la contraseña como propiedad del sistema al iniciar el programa (por ejemplo, -DpropertyProtectionPassword=...).
  • Utilice un almacén de claves: Utilice un almacén de claves protegido mediante una contraseña maestra.

Es importante tener en cuenta que es difícil almacenar de forma segura la contraseña maestra, pero estos métodos pueden mejorar la seguridad de las contraseñas en los archivos de configuración en comparación con el almacenamiento de texto sin formato.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3