Encodage / Decodage :: Cle RSA
Bonjour à tous,
J'ai actuellement comme mandat d'encrypter et décrypter des données d'un formulaire.
Je n'ai jamais eu à faire ce type de travail donc je suis un peu embêté.
Je n'ai pas de ressource autour de moi me permettant de m'orienter.
Je me suis fait remettre 3 fichiers.
un fichier .CRT illisible.
Un fichier .CRT lisible qui contient des informations sur le certificat etc..
et un fichier .key qui contient à ce qui semble a la private key.
Je sais que c'est une cle RSA de 1024 bits.
En regardant ici et la , j'ai trouvé un tutoriel qui semblait faire ce que je voulais faire.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
public void Encryption(){ //C:\\MyFile.txt
File keyFile = new File("C:\\cipher\\public.crt");
byte[] encodedKey = new byte[(int) keyFile.length()];
try{
new FileInputStream(keyFile).read(encodedKey);
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
// TEST
PublicKey pk = kf.generatePublic(publicKeySpec);
//
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, pk);
byte[] cypherText = cipher.doFinal("Hello the world".getBytes("UTF8"));
System.out.println("Cryptés");
System.out.println(cypherText);
//
keyFile = new File("C:\\cipher\\privee.key");
encodedKey = new byte[(int) keyFile.length()];
new FileInputStream(keyFile).read(encodedKey);
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(encodedKey);
PrivateKey privateKey = (RSAPrivateKey)kf.generatePrivate(privateKeySpec);
cipher.init(Cipher.DECRYPT_MODE,privateKey);
System.out.println("decrypté");
System.out.println(cipher.doFinal(cypherText));
}
catch(Exception e){
logger.error(e.getMessage());
}
} |
Le fichier se lit bien mais le contenu c'est des signes comme ""
Donc sa plante à PublicKey pk = kf.generatePublic(publicKeySpec);
avec l'erreur java.security.InvalidKeyException: IOException: X509.ObjectIdentifier() -- data isn't an object ID (tag = -96)
Vous auriez une idée de ce qu'il y aurait de pas correct dans ma procèdure ?
Merci.