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 :

Utilisation de Cipher


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Par défaut Utilisation de Cipher
    Bonjour,

    je rencontre un problème avec l'utilisation du Cipher.
    je dois crypter un String. Pour ça pas de problème vraiment.
    Par contre lorsque j'affiche ce String, il me fait des sauts des lignes et c'est ça qui me pose problème.
    Savez-vous comment résoudre ceci?

    Déroulement : Cryptage -> encodage Base64 -> Affichage
    Le problème se situe au niveau du cryptage car lorsque j'affiche le résultat crypter avant encodage il me fait déja des sauts de ligne!

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Parce que tu manipule des byte[]
    Or tu crypte dans une plage de valeur qui inclue la représentation sous forme de byte du saute de ligne.

    Une solution serai d'afficher ton tableau de byte sous leur représentation numérique.
    Pour cela je te conseil de regarder la classe Byte.
    http://download.oracle.com/javase/6/...lang/Byte.html

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Parce que tu manipule des byte[]
    Or tu crypte dans une plage de valeur qui inclue la représentation sous forme de byte du saute de ligne.

    Une solution serai d'afficher ton tableau de byte sous leur représentation numérique.
    Pour cela je te conseil de regarder la classe Byte.
    http://download.oracle.com/javase/6/...lang/Byte.html

    Cordialement,
    Patrick Kolodziejczyk.
    Oui c'est bien ce que je me disais aussi...
    Par contre, je ne vois pas trop comment utilisé la classe Byte!

    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
    byte[] input = sbHashe.toString().getBytes();
    Cipher cipher = null;
    		KeyPairGenerator generator = null;
    		Key pubKey = null;
    		Key privKey = null;
    		byte[] cipherText = null;
     
    	try {
    			cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
    			generator = KeyPairGenerator.getInstance("RSA", "BC");
     
    			generator.initialize(2048);
    			KeyPair pair = generator.generateKeyPair();
     
    			pubKey = pair.getPublic();
    			privKey = pair.getPrivate();
     
    			//Cryptage
    			cipher.init(Cipher.ENCRYPT_MODE, privKey);
    			cipherText = cipher.doFinal(input);
    Peu être aurait tu plus d'indication à me donner en voyant mon code...
    merci de ton aide.

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Quand tu transformes une chaîne de caractères en octet (ou inversement), il faut toujours préciser l'encodage (exemple "UTF-8").

    Ensuite la sortie d'un cipher n'est pas un texte, tu peux l'afficher en base64 si ca te fait plaisir mais ce ne représente pas un texte, uniquement une série de nombres.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Quand tu transformes une chaîne de caractères en octet (ou inversement), il faut toujours préciser l'encodage (exemple "UTF-8").

    Ensuite la sortie d'un cipher n'est pas un texte, tu peux l'afficher en base64 si ca te fait plaisir mais ce ne représente pas un texte, uniquement une série de nombres.
    Concernant la sortie du cipher, je sais que ça ne représente pas un texte. Ce n'est pas ça qui me pose problème.
    Le problème c'est que avec mon résultat crypter et encodé en base64, je réalise un window.open en javascript et étant donné qu'il y a des saut de ligne il considère ma ligne comme mal terminée!

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    La classe Byte n'est pas forcement utile en fait.
    Voici un exemple d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    byte[] cipherText = "to\ntot".getBytes();
    for (int i = 0; i < cipherText.length; i++) {
    	Byte myByte = new Byte(cipherText[i]);
    	System.out.println(myByte+" _ "+cipherText[i]+" _ "+((char)cipherText[i]));
    }
    for (int i = 0; i < cipherText.length; i++) {
    	System.out.print(+cipherText[i]+"/");
    }
    Donne l'affichage suivant :
    116 _ 116 _ t
    111 _ 111 _ o
    10 _ 10 _

    116 _ 116 _ t
    111 _ 111 _ o
    116 _ 116 _ t
    116/111/10/116/111/116/
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Par défaut
    Je ne vois pas trop ou tu veux en venir!
    Ce que tu fait reviens à modifier ta chaine?! Et je ne peux pas modifier ma chaine car sinon le décryptage ne marchera pas.

    voici mon cryptage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    þ…ç8×xžòc†OÙÅÇÜ÷Ðä½	‘eîX7†àŽHœ…n+ë?¼ËÌŽ/nÜËx.{
    )÷„yE\,3I7;z'º?<Ë^qŸQ?îI`ùMN*Ö’?–±´±`¢¤LUçv/Û*èG>TP‚lïÈêëš®q¤]¨ÿ°øçe`ð•uˆH·¯Á³_ò>ÜhOÄ
    ÞwF#3ÖŒ%Br†tÞÿ.n¬œÎï#«1I3,?
    À¥‰=D‹µ¦QbÿüÀG*U.Â`%"†¸kk?m‡KY±"Lïrk†1ƒX²æ¶ÆyòaP¬tžÆeTX}

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Je passe par un affichage différent, je ne modifie en rien les données.
    Ensuite la sortie d'un cipher n'est pas un texte, tu peux l'afficher en base64 si ca te fait plaisir mais ce ne représente pas un texte, uniquement une série de nombres.
    Pour l'affichage tu peux très bien donnée la représentation en chiffre des bytes.
    (Ce que j'ai fait dans la dernière boucle)

    Sinon ton affichage est totalement normal. Mais si une personne le copie, puis le colle, il est probable que cela rend impossible de décodage.
    (Car certains caractères représentent plusieurs bytes)
    Si tu présente le texte chiffré pour information, alors ce que tu as actuellement est ce qu'il faut que tu montre.

    Cordialement,
    Patrick Kolodziejcyzk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  9. #9
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par benjibul Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    þ…ç8×xžòc†OÙÅÇÜ÷Ðä½	‘eîX7†àŽHœ…n+ë?¼ËÌŽ/nÜËx.{
    )÷„yE\,3I7;z'º?<Ë^qŸQ?îI`ùMN*Ö’?–±´±`¢¤LUçv/Û*èG>TP‚lïÈêëš®q¤]¨ÿ°øçe`ð•uˆH·¯Á³_ò>ÜhOÄ
    ÞwF#3ÖŒ%Br†tÞÿ.n¬œÎï#«1I3,?
    À¥‰=D‹µ¦QbÿüÀG*U.Â`%"†¸kk?m‡KY±"Lïrk†1ƒX²æ¶ÆyòaP¬tžÆeTX}
    Ce n'est qu'une (mauvaise) représentation de ton cryptage. Tu as essayé d'en faire une chaîne de caractères alors que tu n'aurais pas dû, ce sont des nombres pas des caractères.

    Tu peux en revanche afficher une série de nombre au format "base64".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Base64 {
      public static String encode(final byte[] bytes) {
        return new sun.misc.BASE64Encoder().encode(bytes);
    }

    Citation Envoyé par benjibul Voir le message
    Au final mon objectif est de créer un URL pour ouvrir une popup :
    exemple : http://www.google.fr/souscrire?p=xxxxxxxxxxx
    xxx représente ma chaine crypter encodé en base64
    Citation Envoyé par kolodz Voir le message
    Alors tu ne t'y prend pas de la bonne manière.
    Déjà parce qu'un lien comme cela est limité en taille.
    Je te laisse lire cette article :
    http://www.boutell.com/newfaq/misc/urllength.html
    Il suffit de poster la chaîne en base64.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de la classe javax.crypto.Cipher
    Par Le Marlou dans le forum Sécurité
    Réponses: 7
    Dernier message: 24/02/2010, 14h04
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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