voici comment crypter et d�crypter un mot de passe avec l'algorithme Blowfish, en 
utilisant les fonctions cryptographiques de Java (t�l�charger JCE sur le site Sun pour 
un jdk<=1.3, sinon jce.jar est directement inclus dans le jdk 1.4) :

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class TestBlowfish {

        public static void main(String[] args) {
                try {
                        // G�n�ration d'une cl� une fois pour toutes :
                        KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
                        SecretKey skey = kgen.generateKey();
                        byte[] raw = skey.getEncoded();
                        // -> cl� � enregistrer dans le programme client (.class par 
exemple) 
                        SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
                        BASE64Encoder encoder = new BASE64Encoder();
                        System.out.println(encoder.encode(raw));
                                                
                        // Utilisation de la cl� pour envoyer un string
                        // encrypt�
                        Cipher cipherEnc = Cipher.getInstance("Blowfish");
                        cipherEnc.init(Cipher.ENCRYPT_MODE, skeySpec);
                        byte[] encrypted = 
cipherEnc.doFinal("exempleDeMotDePasse".getBytes());         
                        String crypte = encoder.encode(encrypted);
                        
                        // Ecriture dans le fichier de config
                        // ...
                        System.out.println("Mot de passe crypt� envoy� par le client 
dans la base : ["+crypte+"]");
                        // ...
                        // R�cup�ration dans le fichier de config
                        
                        // Utilisation de la cl� pour d�crypter un mot 
                        // de passe r�cup�r�
                        Cipher cipherDec = Cipher.getInstance("BlowFish");
                        cipherDec.init(Cipher.DECRYPT_MODE, skeySpec);
                        BASE64Decoder decoder = new BASE64Decoder();
                        byte[] received = decoder.decodeBuffer(crypte); 
                        byte[] decrypted = cipherDec.doFinal(received);
                        String decrypte = new String(decrypted);
                        
                        System.out.println("Mot de passe d�crypt� par le client : 
["+decrypte+"]");
                } catch (Exception e) {
                        e.printStackTrace();                    
                }
                
        }

}



En r�ponse � Patrice Godard <[EMAIL PROTECTED]>:

> J'ai � peu pr�s le m�me soucis.
> J'ai opt� pour un algorithme de "cryptage" maison.
> Enfin, c'est plus du camouflage que du cryptage mais �a r�pond au besoin
> (pas de forte contrainte de s�curit�).
> 
> -----Original Message-----
> From: "Fabien" <[EMAIL PROTECTED]>
> To: "Java" <[EMAIL PROTECTED]>
> Date: Thu, 20 Mar 2003 12:49:26 +0100
> Subject: probleme de securite
> 
> J'ai dans un fichier de proprietes, les indications qui me permettent de
> me
> connecter a une base Oracle. Comment faire pour que personne ne puisse
> voir
> ces indications sensibles de connection et que je puisse les changer
> dynamiquement. Par contre, il faut absolument qu'elles soit stock�es
> qq
> part.
> 
> Merci la liste!!
> 
> 
> 
> "Ne demandez pas une charge plus l�g�re, mais des �paules plus
> solides."
> 
> 
> 
> -- S'il n'y a pas de solution, il n'y a pas de probl�me --
> 


Répondre à