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

  1. #21
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2016
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Joel tu as vu juste.
    En fait je lui passais juste une clé au lieu d'utiliser RSAKeyPairGenerator pour genérer une clé privée et une clé publique.
    Il est vrai que pour l'encodage on n'a pas besoin de clé, mais pour stocker le message, l'espace est générer par la clé.
    Je me suis rendue compte qu'en utilisant comme block asymétrique le RSABlindedEngine, il encryptait directement le message, alors que je voulais juste récupérer son encode. J'ai résolu le problème en créant une classe qui implémente l'interface AsymmetricBlockCipher.
    Néanmoins un problème subsiste encore, celui du 0 de devant.
    Je dois chercher comment faire ca avant de commencer mes tests.
    Voici mon code au cas pour que ca puisse aider d'autres personnes.
    Dès que je trouve ce zéro je marquerai le sujet comme résolu.

    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
    // générer les clés RSA 
            RSAKeyPairGenerator gen = new RSAKeyPairGenerator();
            gen.init(new RSAKeyGenerationParameters(new BigInteger("7", 16), new SecureRandom(), 128,0));
            AsymmetricCipherKeyPair keyPair = gen.generateKeyPair();
     
            // le message 
            byte[] message = createMessage(5);
     
            // encoder le message en utilisant une classe qui implemente l' interface AsymmetricblockCipher
            // pour encrypter juste utiliser RSABlindedEngine à la place
            AsymmetricBlockCipher cipher = new MyAsymBlockCypher();
            cipher = new PKCS1Encoding(cipher);
            cipher.init(true, keyPair.getPrivate());
            byte[] rsaEncodedData = cipher.processBlock(message, 0, message.length);
            System.out.println("espace généré en fonction de la clé: " + rsaEncodedData.length);
    // printByteArray est une fonction qui imprime juste un tableau de byte
            printByteArray(rsaEncodedData);
            printByteArray(message);
    Et voici ce que ca donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    :BouncyCastleTests:test
    Long: 15
    Here your Byte-array: 01 FF FF FF FF FF FF FF FF 00 42 42 42 42 42 
    Here your Byte-array: 42 42 42 42 42 
    BUILD SUCCESSFUL
    je dois en principe avoir ceci: EM = 0x00 || 0x01 || PS || 0x00 || T.

  2. #22
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2016
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Dans la classe PKCS1Encoding il ya les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /**
         * some providers fail to include the leading zero in PKCS1 encoded blocks. If you need to
         * work with one of these set the system property org.bouncycastle.pkcs1.not_strict to true.
         * <p>
         * The system property is checked during construction of the encoding object, it is set to
         * false by default.
         * </p>
         */
        public static final String NOT_STRICT_LENGTH_ENABLED_PROPERTY = "org.bouncycastle.pkcs1.not_strict";
    avec le debogage je vois que cèst null et je crois bien le mettre lors du debogage sur "true", mais pas de changement.
    Joel as tu un conseil?

  3. #23
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 399
    Points : 29 010
    Points
    29 010
    Billets dans le blog
    2
    Par défaut
    -Dorg.bouncycastle.pkcs1.not_strict=true dans la ligne de commande de lancement de l'application. Ou par le code, au début de ton main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setProperty(PKCS1Encoding.NOT_STRICT_LENGTH_ENABLED_PROPERTY,"true");
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #24
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2016
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Joel j'ai insérer la ligne directement au début de mon test, vu que j'ai pas de main, mais ca marche pas.

  5. #25
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2016
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Le zero de devant du padding n'est pas généré par le pkcs1encoding.
    La variable qui gère ca ne fait rien.
    Donc mon sujet est clos et merci à Joel !!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. comment utiliser les fonctions d'une dll
    Par sebled dans le forum MFC
    Réponses: 3
    Dernier message: 24/02/2006, 16h59
  2. [Excel] Comment utiliser la fonction RECHERCHEV
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 03/02/2006, 11h43
  3. Réponses: 3
    Dernier message: 31/12/2005, 23h09
  4. Comment utiliser la fonction NBR.JOURS.OUVRES?
    Par MEHCOOPER dans le forum Access
    Réponses: 9
    Dernier message: 20/10/2005, 12h50
  5. Réponses: 11
    Dernier message: 22/12/2003, 21h06

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