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

avec Java Discussion :

Probleme de Variable


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme de Variable
    Bonjour,
    J'ai un petit programme en Java qui permet de crypter une chaine avec l'algorithme blowfish, le problème c'est que, d'après ce que j'ai compris, il génère la clé de cryptage tout seul, elle est de type byte[], j'ai essayé de la convertir en String mais j'ai pas réussi. Le problème c'est quels sont les modifications nécessaires a faire pour que la clé de cryptage/décryptage soit entrée en paramètre en plus du texte a crypter ?

    Voici l'algorithme en question :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    // Updates: 2004.03.23
     
     
    import java.io.*;
    import java.math.*;
    import java.util.*;
    import javax.crypto.*;
    import java.security.*;
    import javax.crypto.spec.*;
    import java.security.interfaces.*;
     
     
    /** 
     * Cette classe propose des méthodes permettant de crypter et décrypter des 
     * messages avec l'algorithme de Blowfish.
     */
    public class MyBlowfish {
      public final static int KEY_SIZE = 128;  // [32..448]
     
      private Key secretKey;
     
     
      public MyBlowfish() {
      }
     
     
      public Key getSecretKey() {
        return secretKey;
      }
     
     
      /**
       * Retourne toutes les informations de la clé sous forme d'un tableau de
       * bytes. Elle peut ainsi être stockée puis reconstruite ultérieurement en
       * utilisant la méthode setSecretKey(byte[] keyData)
       */
      public byte[] getSecretKeyInBytes() {
        return secretKey.getEncoded();
      }
     
     
      public void setSecretKey(Key secretKey) {
        this.secretKey = secretKey;
      }
     
     
      /**
       * Permet de reconstruire la clé secrète à partir de ses données, stockées 
       * dans un tableau de bytes.
       */
      public void setSecretKey(byte[] keyData) {
        secretKey = new SecretKeySpec(keyData, "Blowfish");    
      }
     
     
      public void generateKey() {
        try {
          KeyGenerator keyGen = KeyGenerator.getInstance("Blowfish");
          keyGen.init(KEY_SIZE);
          secretKey = keyGen.generateKey();  
        }
        catch (Exception e) {System.out.println(e);} 
      }
     
     
      public byte[] crypt(byte[] plaintext) {
        try {
          Cipher cipher = Cipher.getInstance("Blowfish");
          cipher.init(Cipher.ENCRYPT_MODE, secretKey);
          return cipher.doFinal(plaintext);    
        }
        catch (Exception e) {System.out.println(e);} 
        return null;
      }
     
     
      public byte[] crypt(String plaintext) {
        return crypt(plaintext.getBytes());
      }
     
     
      public byte[] decryptInBytes(byte[] ciphertext) {
        try {
          Cipher cipher = Cipher.getInstance("Blowfish");
          cipher.init(Cipher.DECRYPT_MODE, secretKey);
          return cipher.doFinal(ciphertext);
        }
        catch (Exception e) {System.out.println(e);} 
        return null;
      }
     
     
      public String decryptInString(byte[] ciphertext) {
        return new String(decryptInBytes(ciphertext));
      }
     
     
      /**
       * Cette méthode permet de tester le bon fonctionnement des autres.
       */
      public static void main(String[] args) {
        String plaintext = args[0];
        System.out.println("plaintext = " + plaintext);
        MyBlowfish bf = new MyBlowfish();
        bf.generateKey();
        byte[] secretKey = bf.getSecretKeyInBytes();
        byte[] ciphertext = bf.crypt(plaintext);   
        System.out.println("ciphertext = " + new BigInteger(ciphertext));
     
        bf.setSecretKey(secretKey);
        String plaintext2 = bf.decryptInString(ciphertext);
        System.out.println("plaintext2 = " + plaintext2);
        if (!plaintext2.equals(plaintext)) System.out.println("Error: plaintext2 != plaintext");
      }
    }
    Merci d'avance...

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en cryptographie, les clés sont bien souvent des nombres, pas des mots de passes. D'ou l'utilisation de l'array de byte. Pour convertir en chaine de caractère il d'abord décider de comment on représente ce nombre sous forme de caractères. Généralement on utilie de l'encodage en base64. D'une manière générale, faire appel à new String(byte[]) ne fonctionnera pas pour la clé.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse rapide !
    Je vais dire que je vais me contenter des nombres comme clé, qu'elles sont les modifs nécessaires à faire pour que l'algorithme prend les nombres en entrée ?!
    Normalement je dois convertir le nombre en byte avec byteValue, mais je n'ai pas su m'y prendre !

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu peux nous donner ton code?

Discussions similaires

  1. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 10h58
  2. Réponses: 10
    Dernier message: 03/05/2005, 21h57
  3. [langage] Probleme de variable transfert de contenu
    Par Ludo167 dans le forum Langage
    Réponses: 10
    Dernier message: 08/07/2004, 11h40
  4. [algo]probleme de variables hotes ds un insert
    Par omega dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2004, 09h03
  5. Réponses: 2
    Dernier message: 04/01/2004, 15h14

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