Bonjour
Je cherche à mettre en place un system d'échange de données cryptées entre une application java et un serveur via php
J'ai réussi à implémenter la cryptographie en elle même en utilisant ce post:
blowfish-php-java don voici le code fonctionnel:
Mon problème viens de la transmission car je n'arrive pas à encoder d'un coté puis décoder de l'autre.en java
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
15
16
17
18
19
20 public static byte[] encrypt(byte[] messageBytes, byte[] key) throws GeneralSecurityException { Provider[] pvs = Security.getProviders(); SecretKeySpec skeySpec = new SecretKeySpec(key, "Blowfish"); Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); String iv = "00000000"; IvParameterSpec ivs = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivs); byte[] encrypted = cipher.doFinal(messageBytes); return encrypted; } public static byte[] decrypt(byte[] encrypted, byte[] key) throws GeneralSecurityException { SecretKeySpec skeySpec = new SecretKeySpec(key, "Blowfish"); Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); String iv = "00000000"; IvParameterSpec ivs = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivs); byte[] decrypted = cipher.doFinal(encrypted); return decrypted; }
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 function encrypt($cleartext, $key){ $cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, ''); $key = substr($key, 0, mcrypt_enc_get_key_size($cipher)); $iv = '00000000'; // ajout du Padding. $cleartext_length = strlen($cleartext)%8; for($i=$cleartext_length; $i<8; $i++){ $cleartext .= chr(8-$cleartext_length); } $cipherText=''; // 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; } function decrypt($encrypted, $key){ $cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, ''); $key = substr($key, 0, mcrypt_enc_get_key_size($cipher)); $iv = '00000000'; // 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); } // suppression du padding. $pad = ord(substr($cleartext,strlen($cleartext)-1)); if($pad>0 & $pad<=8){ $cleartext = substr($cleartext, 0, strlen($cleartext) - $pad); } return $cleartext; }
J'ai essayer diverses techniques mais sans succès.
Partager