Salut, j'essaye de mettre en place un algo de cryptage symétrique qui fonctionne également en Java et Php.

mais apparement les algorithme de blowfish ne semble pas fonctionner de la même maniere sous php et Java.

voici ce que je fait :

en php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function encrypt($cleartext, $key){
	$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($cipher));
    $iv = '12345678';
 
	// 128-bit blowfish encryption:
	if (mcrypt_generic_init($cipher, $key, $iv) != -1){
		// PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
		$cipherText = mcrypt_generic($cipher,$cleartext );
		mcrypt_generic_deinit($cipher);
	}
 
	return $cipherText;
}
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
function decrypt($encrypted, $key){
	$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($cipher));
    $iv = '12345678';
 
	// 128-bit blowfish encryption:
	if (mcrypt_generic_init($cipher, $key, $iv) != -1){
		// PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
		$cleartext = mdecrypt_generic($cipher,$encrypted );
		mcrypt_generic_deinit($cipher);
	}
 
	return $cleartext;
 
}
et en Java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public static byte[] encrypt(byte[] messageBytes, byte[] key) throws GeneralSecurityException {
	SecretKeySpec skeySpec = new SecretKeySpec(key, "Blowfish");
	Cipher cipher = Cipher.getInstance("Blowfish");
	cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
	byte[] encrypted = cipher.doFinal(messageBytes);
	return encrypted;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public static byte[] decrypt(byte[] encrypted, byte[] key) throws GeneralSecurityException {
	SecretKeySpec skeySpec = new SecretKeySpec(key, "Blowfish");
	Cipher cipher = Cipher.getInstance("Blowfish");
	cipher.init(Cipher.DECRYPT_MODE, skeySpec);
	byte[] decrypted = cipher.doFinal(encrypted);
	return decrypted;
}
Je vous passe les détails de cablage...

la boucle clearText->encoded->clearText fonction bien sous Java et php... mais pas entre Java et Php...

quelqu'un peut t'il m'aiguiller?

merci.

Patrice.