J'essaie de créer un programme qui crypte les données en utilisant AES, puis crypte la clé AES avec RSA, puis décrypte. Cependant, une fois que je crypte la clé AES, elle sort à 128 octets. RSA me permettra seulement de décrypter 117 octets ou moins, donc quand je vais déchiffrer la clé AES, il y a une erreur.Clé AES cryptée trop grande pour déchiffrer avec RSA (Java)
Code relavent:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kpa = kpg.genKeyPair();
pubKey = kpa.getPublic();
privKey = kpa.getPrivate();
updateText("Private Key: " +privKey +"\n\nPublic Key: " +pubKey);
updateText("Encrypting " +infile);
//Genereate aes key
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192/256
SecretKey aeskey = kgen.generateKey();
byte[] raw = aeskey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
updateText("Encrypting data with AES");
//encrypt data with AES key
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, skeySpec);
SealedObject aesEncryptedData = new SealedObject(infile, aesCipher);
updateText("Encrypting AES key with RSA");
//encrypt AES key with RSA
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptedAesKey = cipher.doFinal(raw);
updateText("Decrypting AES key with RSA. Encrypted AES key length: " +encryptedAesKey.length);
//decrypt AES key with RSA
Cipher decipher = Cipher.getInstance("RSA");
decipher.init(Cipher.DECRYPT_MODE, privKey);
byte[] decryptedRaw = decipher.doFinal(encryptedAesKey); //error thrown here because encryptedAesKey is 128 bytes
SecretKeySpec decryptedSecKey = new SecretKeySpec(decryptedRaw, "AES");
updateText("Decrypting data with AES");
//decrypt data with AES key
Cipher decipherAES = Cipher.getInstance("AES");
decipherAES.init(Cipher.DECRYPT_MODE, decryptedSecKey);
String decryptedText = (String) aesEncryptedData.getObject(decipherAES);
updateText("Decrypted Text: " +decryptedText);
Toute idée sur la façon de contourner ce problème?
Votre description de l'erreur n'a pas de sens. Vous devriez publier la trace complète de la pile. En l'état, la partie RSA de votre code devrait fonctionner correctement. Je l'ai testé, et ça fonctionne très bien pour moi. –
Ahh maintenant je vois, vous êtes un bâtard paresseux. Je vois que tu as posté le même code il y a un mois sur les forums du soleil * et * on t'a dit quel était ton bug. Ensuite, vous venez de republier le même code juste pour perdre le temps de tout le monde. Si j'ai couru ce site, je supprimerais votre compte. –