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 :

[Java][Security][MessageDigest] ArrayIndexOutofBoundException avec JRE5.0


Sujet :

Langage Java

  1. #1
    Membre émérite

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Par défaut [Java][Security][MessageDigest] ArrayIndexOutofBoundException avec JRE5.0
    Bonjour tout le monde,

    Voici mon problème.
    J'ai migré mes application web de IAS 10g release 1 vers la 10G release 3.

    Je rencontre un problème lorsque je souhaite crée un checksum sur les fichiers uploadé sur les serveurs.

    Ce code fonctionnait bien sur les précedentes version. Mais maintenant cette dernière release utilise la JRE 5.0.

    Voici le bout de code qui foire

    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
     public static String getChecksum(FileInputStream from) throws ChecksumException, IOException {
        try {
          MessageDigest md = MessageDigest.getInstance("MD5");
          int bufferSize = 64000;
          byte[] bufferFile = new byte[bufferSize];
          for (int i = 0; ; i++) {
            int len = from.read(bufferFile);
            md.update(bufferFile, 0, len);
            if (len < 0)
              break;
          }
     
          return (encodeMD5(md.digest()));
     
          //return dig;
        } catch (NoSuchAlgorithmException ns) {
          throw new ChecksumException("Algorithm is not implemented");
        }
     
      }
     
    public static String encodeMD5(byte[] binaryData) {
        if (binaryData.length != 16) {
          return "";
        }
        final char[] hexadecimal = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        char[] buffer = new char[32];
        for (int i = 0; i < 16; i++) {
          int low = (int) (binaryData[i] & 0x0f);
          int high = (int) ((binaryData[i] & 0xf0) >> 4);
          buffer[i * 2] = hexadecimal[high];
          buffer[i * 2 + 1] = hexadecimal[low];
        }
        return new String(buffer);
      }
    Je me ramasse comme exception un ArrayIndexOutOfBoundException à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    md.update(bufferFile, 0, len);
    Je me pose la question de savoir pourquoi cela ne fonctionne plus.
    De plus cette méthode n'est même pas déprecated.

    Voilà.
    D'avance merci pour vos réponses.

  2. #2
    Membre expérimenté Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Par défaut
    Que vaut ton len ?
    affiche un peu sa valeur pour voir

  3. #3
    Membre émérite

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Par défaut
    Première fois 74
    deuxième fois -1

  4. #4
    Membre émérite

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Par défaut
    Bon ben je viens de trouver une autre méthode.
    Je vais utiliser la classe ByteBuffer

    Mais bon si tu as toujours une idée du pourquoi de cette exception, elle est la bienvenue


  5. #5
    Membre expérimenté Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Par défaut
    Et bien ça vient de ton len qui vaut -1
    En fait c'est from.read(bufferFile); qui ne passe pas car tu as atteint la fin du fichier.

    http://java.sun.com/j2se/1.4.2/docs/...%20int,%20int)


  6. #6
    Membre émérite

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Par défaut
    Je suis d'accord avec ça mais ce que j'aimerais comprendre c'est pourquoi je n'avais aucune exception avec la 1.4.2 .
    L'exception est uniquement apparue lorsque j'ai commencé à utiliser la 5.0

Discussions similaires

  1. Autorisation avec java.security.acl
    Par scandinave dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 28/08/2012, 00h38
  2. [java] établir un lien avec une application java
    Par pmartin8 dans le forum Access
    Réponses: 2
    Dernier message: 19/10/2005, 14h36
  3. [XSD][JAVA] Valider un XML avec un XSD schéma
    Par vad dans le forum Valider
    Réponses: 1
    Dernier message: 17/08/2005, 11h47
  4. [Java Security Manager] ajouter des permissions
    Par dahwoud dans le forum Sécurité
    Réponses: 2
    Dernier message: 05/07/2005, 09h11
  5. [java 1.5] utilisation avec eclipse??
    Par champion dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/02/2005, 17h53

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