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; }et en Java
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; }
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; }Je vous passe les détails de cablage...
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; }
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.
Partager