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 symétrique - longueur clé invalide


Sujet :

Sécurité Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Cryptage symétrique - longueur clé invalide
    Bonjour,

    je viens vers vous afin d'avoir des informations. Est-il possible de valider la clé SecretKeySpec quand nous faisons un cryptage symétrique ?

    En effet l'utilisateur peut chiffrer les fichiers généré. Cependant quand je souhaite faire des tests j'ai des erreurs.

    La commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println("cipher = " + Cipher.getMaxAllowedKeyLength("<ALGO>"));
    me retourne:
    et quand j'utilise le code (exemple avec AES mais j'ai l'erreur avec DES...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                Cipher cipher = Cipher.getInstance("AES");
                SecretKeySpec key = new SecretKeySpec(strPassword.getBytes(), "AES");
                cipher.init(Cipher.ENCRYPT_MODE, key);
                byte[] ecrypted = cipher.doFinal(input.getBytes());
    j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exception in thread "main" java.security.InvalidKeyException: Invalid AES key length: 1 bytes
    	at com.sun.crypto.provider.AESCrypt.init(AESCrypt.java:87)
    	at com.sun.crypto.provider.ElectronicCodeBook.init(ElectronicCodeBook.java:93)
    	at com.sun.crypto.provider.CipherCore.init(CipherCore.java:469)
    	at com.sun.crypto.provider.CipherCore.init(CipherCore.java:386)
    	at com.sun.crypto.provider.AESCipher.engineInit(AESCipher.java:186)
    Donc ma question. Est-il possible de valider le mdp ou existe t'il d'autres solutions ? Je pensais passer par en hachage de la clé avec SHA-256 par exemple mais j'ai le même problème.

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Je ne sais pas si c'est une erreur de copier/coller mais à mon avis il manque quelque chose dans ton instruction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SecretKeySpec key = new SecretKeySpec(strPassword.getBytes(), "AES");
    Il faut initialiser la SecretKeySpec avec le contenu binaire de la clef, pas avec celui du mot de passe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    KeyStore ks = KeyStore.getInstance("JCEKS", "SunJCE");
    FileInputStream fis = new FileInputStream(keystorePath);
    ks.load(fis, keystorePassword.toCharArray());
    SecretKey skey = (SecretKey) ks.getKey(keyName, keyPassword.toCharArray());
    SecretKeySpec skeySpec = new SecretKeySpec(skey.getEncoded(), "AES");

Discussions similaires

  1. Python 3.2 - Cryptage symétrique AES en mode CBC
    Par jeby6372 dans le forum Général Python
    Réponses: 26
    Dernier message: 02/02/2014, 18h25
  2. Système de cryptage symétrique
    Par epeichette dans le forum Langage
    Réponses: 5
    Dernier message: 23/11/2008, 02h49
  3. Réponses: 2
    Dernier message: 15/09/2008, 01h33
  4. Cryptage symétrique en C++
    Par demonia dans le forum C++
    Réponses: 5
    Dernier message: 12/12/2007, 19h05

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