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 --
>