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 :

Triple DES Mode CBC décryptage


Sujet :

Sécurité Java

  1. #1
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut Triple DES Mode CBC décryptage
    Bonjour,

    On rame pour comprendre le décryptage d'un message
    j'ai trouvé le code suivant
    par contre, je suis incapable de comprendre comment transfomer mon vecteur d'initialisation ???
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    import java.io.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import java.security.*;
    
    public class DecryptData
    {
      public static void main(String[] args)
      {
        try
        {
    // Create an array to hold the key
          byte[] encryptKey = "This is a test DESede key".getBytes();
    
    // Create a DESede key spec from the key
          DESedeKeySpec spec = new DESedeKeySpec(encryptKey);
    
    // Get the secret key factor for generating DESede keys
          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(
            "DESede");
    
    // Generate a DESede SecretKey object
          SecretKey theKey = keyFactory.generateSecret(spec);
    
    // Create a DESede Cipher
          Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
    
    // Create the initialization vector required for CBC mode
          IvParameterSpec ivParameters = new IvParameterSpec(
            new byte[] { 12, 34, 56, 78, 90, 87, 65, 43 } );
    
    // Initialize the cipher and put it in decrypt mode
          cipher.init(Cipher.DECRYPT_MODE, theKey, ivParameters);
    
          File encryptedFile = new File("encrypted.dat");
    
    // Create a byte block to hold the entire encrypted file
          byte[] encryptedText = new byte[(int) encryptedFile.length()];
    
          FileInputStream fileIn = new FileInputStream(encryptedFile);
    
    // Read the entire encrypted file
          fileIn.read(encryptedText);
    
          fileIn.close();
    
    // Decrypt the data
          byte[] plaintext = cipher.doFinal(encryptedText);
    
          String plaintextStr = new String(plaintext);
    
          System.out.println("The plaintext is:");
          System.out.println(plaintextStr);
        }
        catch (Exception exc)
        {
          exc.printStackTrace();
        }
      }
    }
    il est de la forme bf1b1ac0 apparement je dois le mettre sous la forme hexa d'un tableau de byte[] et c'est la que je suis perdu ???

    IvParameterSpec ivParameters = new IvParameterSpec(
    new byte[] { 12, 34, 56, 78, 90, 87, 65, 43 } );
    ???????


    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je ne sais pas comment est codé ta chaine... As tu essayé tout simplement de prendre le code ascii de chaque caractère de ta chaine ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    bf1... ça m'a tout l'air d'être de l'hexadécimal.

    Pour le transformer, c'est pas bien compliqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static byte[] hexToByteArray (String s) {
      int sLen = s.length();
      if ((sLen & 1) == 1) {
        s += "0";
        sLen++;
      }
      int arrLen = sLen / 2;
      byte[] arr = new byte[arrLen];
      for (int i = 0, j = 0; i < arrLen; i++) {
        arr[i] = Byte.valueOf(s.substring(j, (j += 2))).byteValue();
      }
      return arr;
    }
    Attention, le code n'est pas testé.

Discussions similaires

  1. [Débutant] detection des modes (pics) d'un histogramme
    Par narjes251 dans le forum Images
    Réponses: 8
    Dernier message: 14/03/2009, 12h03
  2. Cryptage triple des cbc
    Par mathieuwfa dans le forum Sécurité
    Réponses: 8
    Dernier message: 04/01/2008, 01h53
  3. [NB 5.5.1] Tailles des Modes du WindowManager
    Par bulbo dans le forum NetBeans
    Réponses: 0
    Dernier message: 21/11/2007, 19h14
  4. detection des modes d'un histogramme monodimensionnel
    Par hanane78 dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/07/2007, 20h56

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