Comment générer une clé secrète en Java une fois et utilisez la touche en 2 programmes différents

Mon but est d'écrire un programme Java pour crypter un fichier texte (cipher text) à l'aide de AES algorithm. Et puis, écrire un autre programme pour décrypter ce fichier crypté (cipher text) pour obtenir le texte en clair en arrière. Je veux utiliser la même clé (la même clé, de générer une fois, l'enregistrer quelque part, et de l'utiliser à la fois le chiffrement et le déchiffrement d'un programme) pour le chiffrement et le déchiffrement du processus. Si je générer une clé et ne le chiffrement et le déchiffrement, ligne par ligne, dans le même programme, il fonctionne parfaitement. Voici le travail d'un extrait de code pour que:

        String strDataToEncrypt = new String();
        String strCipherText = new String();
        String strDecryptedText = new String();

        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(128);
        SecretKey secretKey = keyGen.generateKey();

        Cipher aesCipher = Cipher.getInstance("AES");
        aesCipher.init(Cipher.ENCRYPT_MODE,secretKey);

        strDataToEncrypt = "any text input";
        byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();
        byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt); 
        strCipherText = new BASE64Encoder().encode(byteCipherText);
        System.out.println("cipher text: " +strCipherText);
        aesCipher.init(Cipher.DECRYPT_MODE,secretKey,aesCipher.getParameters());
        byte[] byteDecryptedText = aesCipher.doFinal(new BASE64Decoder().decodeBuffer(strCipherText));
        strDecryptedText = new String(byteDecryptedText);
        System.out.println("plain text again: " +strDecryptedText);

Mais, j'ai besoin d'avoir deux différents programmes (fichiers java) pour le chiffrement et le déchiffrement. Donc, j'ai en quelque sorte à générer une clé et enregistrer quelque part. Puis utiliser la même clé pour le chiffrement et le déchiffrement du programme. Comment puis-je le faire?

EDIT_1

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] encoded = secretKey.getEncoded(); 
System.out.println("key: "+encoded);//key: [B@52b2a2d8

Je peux obtenir la valeur de clé codée en utilisant le programme ci-dessus. Mais ma question est de savoir comment générer de la SecretKey à l'aide de cette valeur dans mon programme de décryptage?

Vous avez généré une clé, ce qui vous empêche de l'écrire dans un fichier et ensuite le lire dans le deuxième programme?
merci de regarder mon montage.
La clé est une byte[] pour que le système utilise Object#toString(), qui écrit simplement l'identité interne. Vous devez écrire l'individu byte pour un fichier, peut-être les convertir en hexadécimal premier.

OriginalL'auteur K M Rakibul Islam | 2013-11-27