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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
public static boolean init(String certificat)
{
try {
ks = KeyStore.getInstance("PKCS12");
// Password pour le fichier *.pfx
password = "*****".toCharArray();
ks.load(new FileInputStream(certificat), password);
}
catch (Exception e)
{
System.out.println("Erreur: fichier "+certificat+" n'est pas un fichier pkcs#12 valide ou passphrase incorrect");
return false;
}
//RECUPERATION DU COUPLE CLE PRIVEE/PUBLIQUE ET DU CERTIFICAT PUBLIQUE
try {
Enumeration en = ks.aliases();
String ALIAS = "";
Vector vectaliases = new Vector();
while (en.hasMoreElements())
vectaliases.add(en.nextElement());
String[] aliases = (String []) (vectaliases.toArray(new String[0]));
for (int i = 0; i < aliases.length; i++)
if (ks.isKeyEntry(aliases[i]))
{
ALIAS = aliases[i];
break;
}
privatekey = (PrivateKey)ks.getKey(ALIAS, password);
cert = (X509Certificate)ks.getCertificate(ALIAS);
publickey = ks.getCertificate(ALIAS).getPublicKey();
}catch (Exception e)
{
e.printStackTrace();
}
return true;
}
public static void cryptage(String fichierACrypte, String fichierCrypte)
{
try
{
// Chargement du fichier à chiffrer
byte[] buffer = ouvrirFichier(fichierACrypte);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
//------------------------------------------------------------------//
// Chiffrement du document
//------------------------------------------------------------------//
// publickey est la cle publique du destinataire
cipher.init(Cipher.ENCRYPT_MODE, publickey, new SecureRandom("aaa".getBytes()));
int blockSize = cipher.getBlockSize();
int outputSize = cipher.getOutputSize(buffer.length);
int leavedSize = buffer.length % blockSize;
int blocksSize = leavedSize != 0 ?
buffer.length / blockSize + 1 : buffer.length / blockSize;
byte[] raw = new byte[outputSize * blocksSize];
int i = 0;
while (buffer.length - i * blockSize > 0)
{
if (buffer.length - i * blockSize > blockSize)
cipher.doFinal(buffer, i * blockSize, blockSize, raw, i * outputSize);
else
cipher.doFinal(buffer, i * blockSize, buffer.length - i * blockSize, raw, i * outputSize);
i++;
}
sauverFichier(fichierCrypte, raw);
System.out.println("Fichier "+fichierACrypte+" crypte avec succes");
}
catch (Exception e)
{
e.printStackTrace();
}
} |
Partager