Snippet #14 ~ JAVA : Crypter et décrypter une chaine de caractère

Salut  !! Tout le monde s’en fout mais c’était mon anniversaire hier !!

Et à cette occasion, c’est moi qui vous fais cadeaux de ce petit snippet permettant de crypter ou de décrypter des String Java et ce en utilisant une clé de cryptage ainsi que les outils du package Cypher.

(en passant, je trouve inquiétant que ce package précis porte le nom du traître de Matrix mais bon…)

Crypter le mot de passe :


public String encrypt(String password,String key){
try
{
Key clef = new SecretKeySpec(key.getBytes("ISO-8859-2"),"Blowfish");
Cipher cipher=Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE,clef);
return new String(cipher.doFinal(password.getBytes()));
}
catch (Exception e)
{
return null;
}
}

 

Décrypter le mot de passe :


public String decrypt(String password,String key){
try
{
Key clef = new SecretKeySpec(key.getBytes("ISO-8859-2"),"Blowfish");
Cipher cipher=Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE,clef);
return new String(cipher.doFinal(password.getBytes()));
}
catch (Exception e)
{
System.out.println(e);
return null;
}
}

 

Si vous ne souhaitez pas utiliser la crypto Cypher, vous pouvez utiliser un code plus simple :

Crypter

    public String encrypt(String password){
        String crypte= » »;
        for (int i=0; i<password.length();i++)  {
            int c=password.charAt(i)^48; 
            crypte=crypte+(char)c;
        }
        return crypte;
    }

 

Décrypter

    public String decrypt(String password){
        String aCrypter= » »;
        for (int i=0; i<password.length();i++)  {
            int c=password.charAt(i)^48; 
            aCrypter=aCrypter+(char)c;
        }
        return aCrypter;
    }

Article rédigé par Idleman

19 réflexions au sujet de « Snippet #14 ~ JAVA : Crypter et décrypter une chaine de caractère »

  1. AkaiKen

    Comment tu spoiles Matrix, rholala.

    Joyeux annif’, alors !

    Tiens, je ne sais plus si j’en avais déjà parlé, mais je cherche un logiciel pour rassembler, conserver et surtout ranger tous ces snippets, compatible Windows et Linux, tu aurais ça dans ta besace ?

    Répondre
    1. Idleman Auteur de l’article

      En même temps ceux qui n’ont toujours pas vu matrix 1 depuis sa sortie il y a 13 ans ne méritent pas vraiment de vivre… :p

      Merci, j’ai commandé une trottinette cette année, je m’adapte à la crise, je vend ce gouffre à pognon que constitue ma clio 1 :p

      Non je n’ai jamais rien développé dans ce sens mais c’est une idée :p, sinon je crois qu’il y à pas mal de sites à droite et à gauche qui servent de base de donnée de snippets. Pour ce qui est de programmes lourds je n’en ai jamais entendu parler :)

      Répondre
      1. AkaiKen

        Je connais des gens qui n’ont pas vu Star Wars. Le premier (le vrai, quoi).

        Je ne pensais pas forcément « as-tu développé une boîte à snippets » dans ma phrase =D mais oui, c’est une idée ^^
        Et je n’aime pas trop l’idée de confier mes snippets à des sites tiers, je préfère avoir le contrôle ^^’ Pour Windows, si ça t’intéresse, j’ai Codex, très bon, introuvable parce que plus sur le site de l’auteur, et je cherchais un équivalent Linux. (ou alors je le Wine ? hmmm)

        Répondre
        1. Idleman Auteur de l’article

          Techniquement, c’est le 4 le premier :) et donc le vrai ( on est fan jusqu’au bout ou on ne l’est pas du tout :D )

          Et personnellement je refuse de parler à ce type de population, les références de ce films s’inscrivent aujourd’hui dans les normes de la langue française pour moi, c’est quelque chose qui devrait être enseigné dès la primaire :p.

          Je veux bien que tu m’envoie codex par curiosité, si un jour j’ai une minute je ferais un équivalent java (et donc portable a peu près partout) et je te préviendrais :)

          Si c’est un petit prog, ça devrais passer sur wine :)

          Répondre
          1. AkaiKen

            Ah mais je parlais évidemment du « 4 ». Pour qui me prends-tu donc =D ?

            Je t’envoie Codex (mais si tu en fais un prog Java, rends-le joli ^^ j’ai vu trop de softs utiles tellement moches que ça ne donne pas envie de les utiliser…).

    1. zakariaouh

      Mercredi, 25 janvier 2012
      un grand merci et :siffle: Joyeux anniversaire en retard, c’est vrai, mais je voulais être sûr d’être la seule personne à te le souhaiter ce jour ! :-)

      Répondre
  2. Anthony

    Bonjour,

    en copiant collant ce code j’obtient de manière un peu aléatoire l’exception suivante :

    logic.TechnicalException: Erreur de decryptage
    at util.cryptage.MyBlowfish.deChiffrer(MyBlowfish.java:40)
    Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.BlowfishCipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)
    at util.cryptage.MyBlowfish.deChiffrer(MyBlowfish.java:37)
    ... 24 more

    Ca vous dit quelque chose?

    Merci

    Répondre
    1. Idleman Auteur de l’article

      Salut, laquelle des deux proposition de l’article a tu copié/collé ?

      Ta chaine crtyptée contient elle des caractères spéciaux ou une longueur indécente?

      As tu modifié le code? La TechnicalException « Erreur de décryptage » ressemble fort a un gestion des exception personnalisée, regarde de ce coté si tu ne peux pas avoir plus de précision sur l’erreur.

      Répondre
      1. Anthony

        Merci pour ta réponse rapide.
        TechnicalException est effectivement une exception perso qui se contente d’afficher la stacktrace.

        J’ai utilisé la première méthode celle utilisant « Blowfish ».

        D’après quelque essai, c’est la conversion byte[] -> String et String -> byte[] qui pose problème.

        Voici ma méthode de teste (cette fois ci en laissant le traitement des exceptions telle qui l’est:

        javax.crypto.BadPaddingException: Given final block not properly padded
        (i=1)Le message décrypté est different du message d’origine
        messageACrypter=v0jDBthWfWuO1uK4hTQKThy1dLTA
        messageDecrypter=null

        Par contre si je transmet / reutilise le « byte[] » plutot que de le transformer en String cela fonctionne.

        Répondre
          1. Anthony

            Oui j’ai vu et j’ai préféré la solution de ne plus faire la conversion.
            Merci pour tes réponses

          2. Idleman Auteur de l’article

            Désolé de ne pouvoir t’aider plus, bonne continuation :)

  3. psycared

    merci ça ma vraiment aider!!!

    Répondre
  4. BERNADIN

    Bonjour les amis
    laissez moi toutes vos préoccupations concernant vos problèmes techniques de montage d’antenne ou de fréquences
    studioback@yahoo.fr et si vous êtes antennistes comme moi echangeons d’idées merci

    Répondre
  5. mathe

    Bonjour,
    J’ai utilisé vos méthodes de cryptage cependant j’ai une erreure qui revient, a propos de la taille des blocs en effet il faut aparemment que ce soit un multiple de 8 enfin je ne comprends pas trop si vous pouviez m’en dire plus, voici l’exeption lors du décryptage ( le cryptage se passe normalement ) :

    Input length must be multiple of 8 when decrypting with padded cipher

    Répondre
  6. radidine massada

    salut je sis débutant dans les rat pourais je connaitre comment crypter mon server rat en fud

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Xo ^_^ :siffle: :p :-( :evil: oO :) T_T <3 :D more »