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

Langage Java Discussion :

Crypt / decrypt symetrique


Sujet :

Langage Java

  1. #1
    Membre du Club
    Homme Profil pro
    Flutter/java/windev/php/javascript
    Inscrit en
    Octobre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flutter/java/windev/php/javascript
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 87
    Points : 52
    Points
    52
    Par défaut Crypt / decrypt symetrique
    Bonjour, j'ai en ensemble client/serveur qui font un handshake en asymétrique pour obtenir une clé symétrique (clé de session donc). tout tourne parfaitement sauf pour les paquet un peu volumineux (500bytes style) du coups j'ai modifié mon crypt en utilisant les update pour crypter block par block.
    seulement j'obtiens maintenant une erreur étrange.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    pas si étrange? quand je l'ai vu je me suis dit: bah c'est rien, un petit new oublié quelque part...
    mais en debug quand je mets un break sur la ligne concerné je n'ai aucune valeur a null et pire, le code fonctionne.

    -> il ne fonctionne pas en exécution normal
    -> il fonctionne en pas a pas


    voila le code:
    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
    public byte[] doCrypt(byte[] mess) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException , IOException
        {
            int off = 0;
            byte[] temp = new byte[encrypt.getBlockSize()];
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            while(mess.length - off > encrypt.getBlockSize())
            {
                    System.arraycopy(mess, off, temp, 0, encrypt.getBlockSize());
                    bos.write(encrypt.update(temp));
                    off += encrypt.getBlockSize();
            }
            System.arraycopy(mess, off, temp, 0, mess.length - off);
            bos.write(encrypt.doFinal(temp));
            return bos.toByteArray();
        }
        
    
        public byte[] doDecrypt(byte[] mess) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException
        {
            int off = 0;
            byte[] temp = new byte[decrypt.getBlockSize()];
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            while(mess.length - off > decrypt.getBlockSize())
            {
                System.arraycopy(mess, off, temp, 0, decrypt.getBlockSize());
                bos.write(decrypt.update(temp));
                off += decrypt.getBlockSize();
            }
            System.arraycopy(mess, off, temp, 0, decrypt.getBlockSize());
            bos.write(decrypt.doFinal(temp));
            return bos.toByteArray();
        }
    j'insiste sur le fait que ma clé session est bonne, si je ne passe pas dans la boucle (donc petit paquet) mon byte[] est bien crypté et décrypté coté serveur.

    si quelqu'un a une idée... j'ai pensé a un problème d'accès concurrent mais il n'y a qu'un thread... le main.

    ps: null pointer sur la ligne en rouge

  2. #2
    Membre du Club
    Homme Profil pro
    Flutter/java/windev/php/javascript
    Inscrit en
    Octobre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flutter/java/windev/php/javascript
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    j'ai trouvé mon null:

    Citation Envoyé par javadoc
    update

    public final byte[] update(byte[] input)
    throws IllegalStateException

    Continues a multiple-part encryption or decryption operation (depending on how this cipher was initialized), processing another data part.

    The bytes in the input buffer are processed, and the result is stored in a new buffer.

    If input has a length of zero, this method returns null.

    Parameters:
    input - the input buffer
    Returns:
    the new buffer with the result, or null if the underlying cipher is a block cipher and the input data is too short to result in a new block
    mais du coup ça vient de la taille de mon getblockSize().
    c'est pas comme ça que l'on récupère la taille max d'un block?

Discussions similaires

  1. [WM19] Crypte et Decrypte sous WM Android et WD PC
    Par courdi95 dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 08/12/2014, 23h29
  2. Crypté et decrypté chaine de caractere
    Par bforzeus dans le forum Langage
    Réponses: 42
    Dernier message: 20/08/2012, 13h07
  3. Base de données cryptées ?
    Par dahwoud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 11/10/2004, 14h59
  4. Identification via un LDAP, password crypté
    Par brice.antoine dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 15/06/2004, 13h04
  5. [procedure stockée] objet crypté
    Par hawax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/04/2004, 17h44

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