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 AES clé 256bits


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 113
    Par défaut Cryptage AES clé 256bits
    Je ne sais pas si je suis dans le bon forum mais voilà ma question :
    J'ai une chaine que je souhaite cryptée en AES 256bits (en java). J'ai trouvé un algo qui l'air de faire ça pas trop mal.
    Mon problème est la clé de chiffrage : je voudrais fournir une chaîne, exple :"toto" et en tirer une clé me permettant ensuite de faire mon cryptage AES 256 bits.
    Et la je bloque... si quelqu'un a une idée je suis preneuse!
    Merci d'avance


    Pour info voici le code que j'ai pour l'instant (récupéré sur le site de Sun)
    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
           String message="This is just an example";
     
           // Get the KeyGenerator
     
           KeyGenerator kgen = KeyGenerator.getInstance("AES");
           kgen.init(128); // 192 and 256 bits may not be available
     
     
           // Generate the secret key specs.
           SecretKey skey = kgen.generateKey();
           byte[] raw = skey.getEncoded();
     
           SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
     
           // Instantiate the cipher
     
           Cipher cipher = Cipher.getInstance("AES");
     
           cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
     
           byte[] encrypted =
             cipher.doFinal((args.length == 0 ?
              "This is just an example" : args[0]).getBytes());
           System.out.println("encrypted string: " + asHex(encrypted));

  2. #2
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut AES 256
    Salut,

    Je travaille exactement sur la même chose, mais comme tu peux le voir dans ton code (enfin celui de sun ), et bien les clé de 192 et 256 bits ne sont pas nécessairement supportées... de toute façon il te faut 256/8 caractères, soit 32, donc si tu veux utiliser toto comme clé, il te faut 28 espaces...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	byte[] raw = "ma cle secrete 123456789 1234567".getBytes();
    	SecretKey skeySpec = new SecretKeySpec(raw, "AES");
     
    	// Chiffrement du fichier
    	Cipher c = Cipher.getInstance("AES");    
            c.init(Cipher.ENCRYPT_MODE, skeySpec, salt);
    	byte[] buf_crypt = c.doFinal(buffer);
    Mais tu vas te retrouver dans le même cas que moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    java.security.InvalidKeyException: Illegal key size
    	at javax.crypto.Cipher.a(DashoA12275)
    	at javax.crypto.Cipher.a(DashoA12275)
    	at javax.crypto.Cipher.a(DashoA12275)
    	at javax.crypto.Cipher.init(DashoA12275)
    	at javax.crypto.Cipher.init(DashoA12275)
    Je suis dessus, je cherche, pas envie de me l'implémenter tout seul, même si ça peut être intéressant et enrichissant, je ne vais pas y passer la nuit...

    bouncycastle est une librairie de crypto très complète en java, je te la conseille.

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut ayé
    Ca y est je l'ai, il faut installer ça :

    Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

    Sinon les clés sont limitées en taille, tu peux le trouver là :

    http://java.sun.com/javase/downloads/index.jsp(other downloads, en bas de la page)

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 113
    Par défaut
    Merci pour l'info mais malheuresement cela ne m'avance pas trop car je ne peux pas modifier les versions de base de lib java..., je vais me tourner vers la lib gnu-crypto, seule lib que j'ai à ma disposition... mais je n'arrive pas à trouver d'exemple de mise en oeuvre... surtout avec mon pb de clé...
    Si quelqu'un a une idée...
    Merci d'avance

  5. #5
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    Si tu veux absolument passer par une chaîne de caractère pour ta clé, génère une clé AES, et cryte-là avec l'algorithme PBE (la clé pour ça est obtenue avec une chaîne de caratère, et donc ça revient au même pour ton problème).

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Bonjour,

    Tu peux essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    KeyGenerator keygen = KeyGenerator.getInstance("AES");
                SecureRandom random = new SecureRandom(new String("la clef secret").getByte());
                keygen.init(random);
                SecretKey key = keygen.generateKey();
    D'après ce que j'ai compris de la javadoc, c'est normalement utilisé si tu as un générateur de clef très performant.

    Sinon tu peux directement envoyer l'objet secretkey sous forme de byte[].

    Bon courage en espérant de t'avoir aidé.

Discussions similaires

  1. [Débutant] Cryptage AES, gestion de la clé et du IV
    Par Anozer dans le forum C#
    Réponses: 2
    Dernier message: 25/09/2011, 23h04
  2. [Débutant] cryptage AES avec fichier .hex
    Par sniper59 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/06/2011, 13h35
  3. Cryptage SSL a 256bit
    Par mustargus dans le forum Sécurité
    Réponses: 5
    Dernier message: 12/03/2011, 21h25
  4. code cryptage AES
    Par youp_db dans le forum Windows
    Réponses: 2
    Dernier message: 04/03/2008, 09h10
  5. Bibliothèque zip avec cryptage AES
    Par guilig dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 01/02/2007, 18h30

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