Comment crypter ou décrypter un fichier en Java?
Je veux crypter et décrypter un fichier en java, j'avais lu cette URL http://www-users.york.ac.uk / ~mal503/lore/pkencryption.htm et j'ai deux fichiers à savoir le certificat de sécurité publique et le fichier de certificat de sécurité privée et privé.fichier pem, j'ai copié ces fichiers et collé dans le répertoire actuel et worte code java comme suit, quand je lance ce aucun cryptage ou décryptage est effectué, pls voir cela et me dire où je me suis trompé
Crypter le code
File ecryptfile=new File("encrypt data");
File publickeydata=new File("/publickey");
File encryptmyfile=new File("/sys_data.db");
File copycontent =new File("Copy Data");
secure.makeKey();
secure.saveKey(ecryptfile, publickeydata);
secure.encrypt(encryptmyfile, copycontent);
Décrypter code
File ecryptfile=new File("encrypt data");
File privateKeyFile=new File("/privatekey");
File encryptmyfile=new File("/sys_data.db");
File unencryptedFile =new File("unencryptedFile");
try {
secure.loadKey(encryptmyfile, privateKeyFile);
secure.decrypt(encryptmyfile, unencryptedFile);
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2 answers
Vous avez simplement brouillé vos fichiers. Ce code fonctionne en utilisant les fichiers DER générés à partir d'openssl comme décrit dans l'article que vous avez lié:
FileEncryption secure = new FileEncryption();
// Encrypt code
{
File encryptFile = new File("encrypt.data");
File publicKeyData = new File("public.der");
File originalFile = new File("sys_data.db");
File secureFile = new File("secure.data");
// create AES key
secure.makeKey();
// save AES key using public key
secure.saveKey(encryptFile, publicKeyData);
// save original file securely
secure.encrypt(originalFile, secureFile);
}
// Decrypt code
{
File encryptFile = new File("encrypt.data");
File privateKeyFile = new File("private.der");
File secureFile = new File("secure.data");
File unencryptedFile = new File("unencryptedFile");
// load AES key
secure.loadKey(encryptFile, privateKeyFile);
// decrypt file
secure.decrypt(secureFile, unencryptedFile);
}
Voici le morceau de code le plus simple pour chiffrer un document avec n'importe quelle clé (Ici Clé aléatoire)
randomKey = randomKey.substring(0, 16);
keyBytes = randomKey.getBytes();
key = new SecretKeySpec(keyBytes, "AES");
paramSpec = new IvParameterSpec(iv);
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
in = new FileInputStream(srcFile);
out = new FileOutputStream(encryptedFile);
out = new CipherOutputStream(out, ecipher);
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
out.write(buf, 0, numRead);
}
in.close();
out.flush();
out.close();