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 :

Generer Key AES 256 bit pour encrypter 128 zéros


Sujet :

Sécurité Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Generer Key AES 256 bit pour encrypter 128 zéros
    Bonsoir,

    J'ai effectué quelques recherches sur le forum , et même si il y avait déjà des posts se référant a se sujet, je n'y est pas trouvé se que j'y souhaité.

    Je dois générer une clée AES aléatoire de 256 bits puis encrypter 128 zéros avec cette clé.

    J'ai deux questions :

    1 ) Es que ce bout de code génère bien une clé de 256 bits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    	     KeyGenerator kgen = KeyGenerator.getInstance("AES");	 
    	     SecureRandom random = new SecureRandom();
    	     kgen.init(random);
                 // random = 256 ?
     
    	     SecretKey skey = kgen.generateKey();
    	     byte[] raw = skey.getEncoded();
     
    	     SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    	     byte[] secretKeyAES = skeySpec.getEncoded();
    puisqu'a l'affichage de la clé : j'obtiens ==>
    KEY : 2321cd52a8e92fbac8020cbeff27be41

    2) Si j'obtiens bien une clé 256 bits, comment se fait-il que les 128 zeros encrypté face plus de 128 bits alors que je devrais obtenir ciphertext de 128 bits...

    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
     
    public static byte[] cryptWithAES(byte[] text, byte[] bytesKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException  {
     
                Cipher cipher = Cipher.getInstance("AES");
                cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(bytesKey, "AES"));
                byte[] encrypted = cipher.doFinal(text);
                return encrypted;
     
        }
     
     
        public static byte[] decryptInBytesWithAES(byte[] ciphertext, byte[] bytesKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException  {
     
                Cipher cipher = Cipher.getInstance("AES"); 
                cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(bytesKey, "AES"));
                byte[] decrypted = cipher.doFinal(ciphertext);
                return decrypted;
     
        }
     
     
    	myCryptoProg() throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException
    	{
    		byte[] secretKeyAES = GenerateAESKey();
    	   	String  myAESKey = HexaKey(secretKeyAES);	   	
    		System.out.println("KEY : "+ myAESKey);	
     
    		String num = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
     
    		System.out.println("Text : " + num );
     
    		byte[] encrypted = cryptWithAES(num.getBytes(), secretKeyAES);
    	    byte[] decrypted = decryptInBytesWithAES(encrypted, secretKeyAES);
     
    	      System.out.println("Encrypt : " + HexaKey(encrypted));
    	     System.out.println("Decrypt : " + new String(decrypted));
     
    	}
    A l'affichage, j'obtiens ceci ==>

    Text : 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    Encrypt : 3dc3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce69983dc
    3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce69983dc3be323f1dfd9a0471ab8e3bce6998ba2ff22
    a7291a41a21d76267603d0b65
    Decrypt : 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    Merci d'avance.

    JacKsoN

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Ta clef ne semble faire que 128 bits (32 caractères hexa). Pour AES 256 il me semble qu'il te faut installer Unlimited Strength Cryptography. Va faire un tour sur cette page : http://java.sun.com/developer/techni...ES/AES_v1.html (avec exemple) :
    This sample program demonstrates how to use strong cryptography, which is available by default in most installations. This does mean that support for larger key sizes is normally unavailable. To use AES with 192- and 256-bit key sizes, you need unlimited strength cryptography.
    Pour le résultat, je dirais que tu as un padding. Tu as 128 octets en entrée (et non pas 128 bits...)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse.

    J'ai déjà télécharger et installer "jce_policy-6" (unlimited strength cryptography).

    Lorsque j'utilise ceci :
    J'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters
    Pour ce qui est du padding, je suis pas sur d'avoir bien tout compris. J'ai trouvé un exemple intéressant pour se que ça intéresse ==> http://www.di-mgt.com.au/cryptopad.html#exampleaes

Discussions similaires

  1. AES 256 Bits
    Par Mailgifson dans le forum Sécurité
    Réponses: 12
    Dernier message: 07/06/2011, 18h27
  2. [ZIP/AES] Créer un zip encrypté
    Par denisC dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 05/06/2009, 15h54
  3. Réponses: 8
    Dernier message: 16/07/2006, 23h23
  4. [gcc/gdb] comment generer un fichier de symboles pour gdb
    Par Mokhtar BEN MESSAOUD dans le forum GDB
    Réponses: 1
    Dernier message: 09/02/2006, 11h18
  5. [Librairies] générer un .csv en php pour excel
    Par allowen dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2005, 16h40

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