![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Sécurité Vos questions sur la sécurité sous Linux/Unix |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité de passage
![]() Date d'inscription: septembre 2008
Messages: 6
|
Bonjour,
Je voudrais crypté tous les fichiers d'un dossier avec l'algorithme de cryptage RSA et ensuite les envoyé par mail. Pour cela j'ai codé un programme java qui liste tous les fichiers d'un dossier et qui les crypte en utilisant un certificat de securité portant l'extension .pfx et pour finir qui les envoi par mail en piece jointe. Sous windows tout est OK, le souci est que lorsque je veux utiliser ce meme java sous unix (avec le meme certificat de sécurité) cela ne marche pas. Voici l'erreur : java.lang.IllegalArgumentException: not an RSA key! at org.bouncycastle.jce.provider.JCERSACipher.engineGetKeySize(UnknownSource) at javax.crypto.Cipher.init(Unknown Source) J'aurais voulu savoir si unix était capable de gérer de tel certificat de cryptage. Si oui y a t-il des modifications à faire au niveau de unix ou du programme java ? Merci de votre aide. |
|
|
|
|
|
#3 (permalink) |
|
Invité de passage
![]() Date d'inscription: septembre 2008
Messages: 6
|
Bonjour voici la méthode pour initialiser le fichier *.pfx (clé publique, clé privée, certificat) ainsi que la méthode pour crypté un fichier passé en paramètres.
Code :
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();
}
}
Merci de votre aide. |
|
|
|
|
|
#4 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: février 2007
Messages: 451
|
apparemment ça serait quand tu fais
Code :
cipher.init(Cipher.ENCRYPT_MODE, publickey, new SecureRandom("aaa".getBytes()));
Apres avoir fait cette modif trace un publickey.getClass(); pour voir ce qu'il en est réellement.
__________________
La science est ce que nous comprenons suffisamment bien pour l'expliquer à un ordinateur. L'art, c'est tout ce que nous faisons d'autre. Donald E. Knuth |
|
|
|
![]() |
![]() |
||
Cryptage RSA sous unix
|
||
| Outils de la discussion | |
|
|