Chiffrer et déchiffrer la valeur du fichier de propriétés dans Java

Je suis à la recherche d'un moyen de crypter un mot de passe dans un fichier de configuration
qui est lu par un programme Java. Actuellement, j'ai lu dans le
mot de passe à partir du fichier texte, mais qui laisse le mot de passe assis à droite
dehors dans l'ouvert si quelqu'un a été à regarder le fichier de configuration.

Je pensais à la construction d'une classe simple où l'utilisateur peut taper
leur mot de passe souhaité, obtenir une version chiffrée du mot de passe, puis
coller la version crypté dans le fichier texte de configuration. Puis le
demande de lire le mot de passe crypté, de déchiffrer le mot de passe
dans une chaîne, et d'avancer.

Je vais avoir des ennuis avec la chaîne-->encrytped octets-->string
les conversions.

Je suis en utilisant le construit en java classes de sécurité à mettre en œuvre ce code.
Voici quelques exemples de code de test:

    //Reads password from config file
String password = ScriptConfig.getString( "password" );
//Generate Key
KeyGenerator kg = KeyGenerator.getInstance("DES");
Key key = kg.generateKey();
//Create Encryption cipher
Cipher cipher = Cipher.getInstance( "DES" );
cipher.init( Cipher.ENCRYPT_MODE, key );
//Encrypt password
byte[] encrypted = cipher.doFinal( password.getBytes() );
//Create decryption cipher
cipher.init( Cipher.DECRYPT_MODE, key );
byte[] decrypted = cipher.doFinal( encrypted );
//Convert byte[] to String
String decryptedString = new String(decrypted);
System.out.println("password: " + password);
System.out.println("encrypted: " + encrypted);
System.out.println("decrypted: " + decryptedString);
//Read encrypted string from config file
String encryptedPassword = ScriptConfig.getString( "encryptedPassword"
);
//Convert encryptedPassword string into byte[]
byte[] encryptedPasswordBytes = new byte[1024];
encryptedPasswordBytes = encryptedPassword.getBytes();
//Decrypt encrypted password from config file
byte[] decryptedPassword = cipher.doFinal( encryptedPasswordBytes );//error here
System.out.println("encryptedPassword: " + encryptedPassword);
System.out.println("decryptedPassword: " + decryptedPassword);
The config file has the following variables:
password=password
encryptedPassword=[B@2a4983
When I run the code, I get the following output:
password: passwd
encrypted: [B@2a4983
decrypted: passwd
javax.crypto.IllegalBlockSizeException: Input length must be multiple
of 8 when decrypting with padded cipher
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.DESCipher.engineDoFinal(Da shoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
at com.sapient.fbi.uid.TestEncryption.main(TestEncryp tion.java:4

Toute aide sur l'erreur, de la structure ou processus, je suis en utilisant pour ce faire
serait génial. Merci.

source d'informationauteur user234194