Bonjour,
Avec le code ci dessous j'arrive à crypter et à décrypter un message mais j'ai pas d'idée pour crypter et décrypter un fichier avec l'algorithme RSA.
Faites moi part de vos idées SVP.
Merci
import java.math.BigInteger;
import java.security.InvalidParameterException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
/**
* @author Simo
*
*/
public class CryptageDecryotage {
public static KeyPair generateKeyPair() throws Exception
{
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
SecureRandom rand = SecureRandom.getInstance("SHA1PRNG");
keyPairGen.initialize(2048, rand);
KeyPair keyPair = keyPairGen.generateKeyPair();
return keyPair;
}
catch (NoSuchAlgorithmException ex) {
throw new Exception("Probleme lors de la création de la pair de clef : "+ex.getMessage());
}
catch (InvalidParameterException ex) {
throw new Exception("Probleme lors de la création de la pair de clef : "+ex.getMessage());
}
}
//Crypter avec la clef publique
public static byte[] cryptWithRSAPublicKey(byte[] plainText,RSAPublicKey clefPublique) {
BigInteger msgEnBigInteger = new BigInteger(plainText);
BigInteger msgCrypte = msgEnBigInteger.modPow(clefPublique.getPublicExponent(), clefPublique.getModulus());
return msgCrypte.toByteArray();
}
//Décrypter avec la clef privé
public static byte[] decryptWithRSAPrivateKey(byte[] cipherText,RSAPrivateKey clefPrivee) {
BigInteger msgADecrypteEnBigInt = new BigInteger(cipherText);
BigInteger msgDecrypteEnBigInt = msgADecrypteEnBigInt.modPow(clefPrivee.getPrivateExponent(), clefPrivee.getModulus());
return msgDecrypteEnBigInt.toByteArray();
}
// le test
public static void main(String[] args) throws Exception
{
KeyPair myKeyPair = generateKeyPair();
byte[] encrypted = CryptageDecryotage.cryptWithRSAPublicKey("projet cryptage test salut".getBytes(), (RSAPublicKey)myKeyPair.getPublic());
byte[] decrypted = CryptageDecryotage.decryptWithRSAPrivateKey(encrypted, (RSAPrivateKey)myKeyPair.getPrivate());
System.err.println(new String(encrypted));
System.err.println(new String(decrypted));
}
}
Configuration: Windows Vista
Firefox 3.0.5