„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verschlüssele ich Passwörter in Konfigurationsdateien sicher mit Java?

Wie verschlüssele ich Passwörter in Konfigurationsdateien sicher mit Java?

Veröffentlicht am 17.11.2024
Durchsuche:383

How to Securely Encrypt Passwords in Configuration Files with Java?

So verschlüsseln Sie Passwörter in Konfigurationsdateien sicher

Die Verschlüsselung von in Konfigurationsdateien gespeicherten Passwörtern ist entscheidend für den Schutz sensibler Daten und die Verhinderung unbefugten Zugriffs.

Verwenden Passwortbasierte Verschlüsselung (PBE) in Java

Eine einfache und effektive Methode zum Ver- und Entschlüsseln von Passwörtern ist die Verwendung Javas passwortbasierte Verschlüsselung (PBE). Mit PBE können Sie mithilfe eines sicheren Algorithmus wie PBKDF2WithHmacSHA512 einen Schlüssel aus einem Passwort ableiten.

Implementierungsschritte

  1. Salt generieren: Erstellen Sie einen zufälligen Salt um Brute-Force-Angriffe anspruchsvoller zu machen.
  2. Leiten Sie die Verschlüsselung ab Schlüssel: Verwenden Sie SecretKeyFactory, um mithilfe des PBKDF2WithHmacSHA512-Algorithmus einen AES-Schlüssel aus dem Passwort und Salt abzuleiten.
  3. Das Passwort verschlüsseln: Initialisieren Sie eine Chiffre mit dem AES/CBC/PKCS5Padding-Algorithmus und Verschlüsseln Sie das Passwort mit dem abgeleiteten Schlüssel.
  4. Speichern Sie das Verschlüsselte Passwort: Speichern Sie das verschlüsselte Passwort zusammen mit dem Salt in der Konfigurationsdatei.
  5. Entschlüsseln Sie das Passwort: Instanziieren Sie beim Lesen aus der Datei eine Chiffre mit demselben Algorithmus und Schlüssel. Entschlüsseln Sie das Passwort mit dem Salt und erhalten Sie den ursprünglichen Klartext.

Beispielcode

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

Speichern des Verschlüsselungskennworts

Eine Herausforderung bleibt: Wo soll das für die Verschlüsselung verwendete Kennwort gespeichert werden? Zu den Optionen gehören:

  • In Quelldatei verschleiern: Speichern Sie das Passwort im Quellcode und verschleiern Sie es, um das Abrufen zu erschweren.
  • Bereitstellen als Systemeigenschaft: Übergeben Sie das Passwort als Systemeigenschaft beim Starten des Programms (z. B. -DpropertyProtectionPassword=...).
  • Verwenden Sie einen Schlüsselspeicher: Verwenden Sie einen durch ein Hauptkennwort geschützten Schlüsselspeicher.

Es ist wichtig zu beachten, dass es schwierig ist um das Master-Passwort sicher zu speichern, aber diese Methoden können die Sicherheit von Passwörtern in Konfigurationsdateien im Vergleich zur Speicherung im Klartext erhöhen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3