IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

Cryptage RSA sous unix


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut Cryptage RSA sous unix
    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.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Oui Unix peut largement gérer de tels objets...
    Tu as généré ton certificat avec quoi ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut
    Salut, ce n'est pas moi qui l'a généré.
    C'est une société extérieure qui me l'a donné pour que je leur envoi des mails cryptés qu'ils pourront décrypter avec leur clé privée.
    Après avoir un peu cherché sur le net je me demandais si openssl n'était pas nécessaire sur la machine UNIX?
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Attends je comprends pas tout :
    Tu veux crypter des emails ? Pour cela pas besoin de clef privée (donc de fichier pfx), le certificat suffit avec la clef publique.
    Ensuite quel est ton code Java qui génère cette erreur ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut
    voici mon code java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    	}		
    }
    la société m'a envoyé un fichier pfx et un p7b je le récupère ou le certificat? Je suis désolé je débute dans ce domaine et c'est très flou pour moi.

    Merci pour ton aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Alors pour résumer :
    • Ton fichier pfx doit contenir le certificat plus la clef privée, protégée par le mot de passe : cette clef te sert à décrypter
    • Ton fichier p7b, comme ca je peux psa dire exactement mais surement une chaine de certificats permettant d'authentifier ton certificat par la CA qui l'a émit (cherche un peu sur le net pour avoir des infos là dessus)

    Ensuite, ton erreur arrive à quelle ligne ?
    Si tu veux seulement crypter des messages comme j'ai dit ci dessus, tu n'as besoin que de la clef publique, je ne comprends pas pourquoi l'entreüprise t'a envoyé sa clef privée, c'est assez risqué comme comportement...
    Finalement, je ne comprends pas ton problème, tu dois faire une appli pour crypter des textes avec rsa ou juste envoyer des emails cryptés ? Dans le deuxième cas, pas besoin de coder une appli pour faire ca les clients mails (tel thunderbird) gèrent très bien les certificats tout seul, et peuvent crypter les emails sans intervention d'un programme extérieur.
    Pour ce qui est de openssl, c'est nécessaire pour générer des certificats par exemple pas pour les utiliser

Discussions similaires

  1. Cryptage rsa sous Delphi
    Par hocine77 dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2010, 18h30
  2. cryptage script shell sous unix
    Par dimitris dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 13/07/2010, 08h01
  3. Cryptage RSA sous unix
    Par tom5040 dans le forum Sécurité
    Réponses: 3
    Dernier message: 03/09/2008, 11h43
  4. cryptage avec RSA sous visual C++
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 17
    Dernier message: 30/05/2007, 10h10
  5. cryptage d'un fichier sous UNIX
    Par medora dans le forum Linux
    Réponses: 5
    Dernier message: 13/04/2007, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo