"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criptografar senhas com segurança em arquivos de configuração com Java?

Como criptografar senhas com segurança em arquivos de configuração com Java?

Publicado em 17/11/2024
Navegar:387

How to Securely Encrypt Passwords in Configuration Files with Java?

Como criptografar senhas com segurança em arquivos de configuração

Criptografar senhas armazenadas em arquivos de configuração é crucial para proteger dados confidenciais e evitar acesso não autorizado.

Usando Criptografia baseada em senha (PBE) em Java

Um método simples e eficaz para criptografar e descriptografar senhas é utilizar o Java Criptografia baseada em senha (PBE). O PBE permite derivar uma chave de uma senha usando um algoritmo seguro, como PBKDF2WithHmacSHA512.

Etapas de implementação

  1. Gere um salt: Crie um salt aleatório para tornar os ataques de força bruta mais desafiadores.
  2. Obtenha a chave de criptografia: Use SecretKeyFactory para derivar uma chave AES da senha e salt usando o algoritmo PBKDF2WithHmacSHA512. chave.
  3. Armazenar a senha criptografada: Armazene a senha criptografada junto com o salt no arquivo de configuração.
  4. Descriptografar a senha: Ao ler o arquivo, instancie uma cifra com o mesmo algoritmo e chave, descriptografe a senha usando o salt e obtenha o original texto simples.
  5. Código de exemplo
  6. import javax.crypto.Cipher; importar javax.crypto.SecretKey; importar javax.crypto.SecretKeyFactory; importar javax.crypto.spec.IvParameterSpec; importar javax.crypto.spec.PBEKeySpec; importar javax.crypto.spec.SecretKeySpec; // ... Chave SecretKeySpec = createSecretKey(password.toCharArray(), salt, iterationCount, keyLength); String criptografadaPassword = criptografar(originalPassword, chave); // ... String decryptedPassword = decrypt(encryptedPassword, key);

Armazenando a senha de criptografia

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);

Ofuscar no arquivo de origem:

Armazene a senha no código-fonte e ofusque-a para dificultar a recuperação.
  • Forneça como propriedade do sistema: Passe a senha como propriedade do sistema ao iniciar o programa (por exemplo, -DpropertyProtectionPassword=...).
  • Use um Key Store: Utilize um KeyStore protegido por uma senha mestra.
  • É importante observar que é difícil para armazenar com segurança a senha mestra, mas esses métodos podem aumentar a segurança das senhas nos arquivos de configuração em comparação ao armazenamento de texto simples.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3