Salut les spécialistes!

Coté Php, j'ai actuellement un select que je retourne en Json à mon device Android, ok!

Pour éviter que les data renvoyées ne circulent en clair, on me demande de crypter cet envoi d'information vers Android.

Pour le moment j'ai qq chose comme ça:

script php principal
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
 
                    $mysql_result = database_exec("select ID, NAME from TABLE1 order by ID");                                                
                    while($line=mysql_fetch_array($mysql_result))
                    {
                        $requete="select count(T2.ID) as nb
                              from TABLE2 T2,
                                   TABLE3 T3
                              where T2.COL = ".$var1."
                                    AND T2.COL = T3.COL";
                        $result=mysql_query($requete);
                        $ligne_nb=mysql_fetch_array($result);
 
                        if($ligne_nb["nb"] != 0)
                        {
                            $output[] = $ligne + $ligne_nb;
                        }
                    }
                    print(json_encode($output));
fct de cryptage php (que j'utilise déjà par ailleurs)
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
function crypt2($cleartext, $key)
{
    $cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($cipher));
    $iv = '00000000';
 
    // Padding.
    $cleartext_length = strlen($cleartext)%8;
    for($i=$cleartext_length; $i<8; $i++)
    {
        $cleartext .= chr(8-$cleartext_length);
    }
 
    $cipherText='';
 
    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 base64_encode($cipherText);
}
Il faudrait donc que j'encrypte la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$output[] = $ligne + $ligne_nb;
Problématique:
-> évidemment, je voudrais ne coder que les data, et non les entêtes de colonnes, puisque j'en ai besoin coté Android pour récupérer les data
-> ex: COLUMN=ID mais DATA=_8pNbgq[
-> puis décoder coté Android pour récupérer mes data en clair

1.) Mais est-ce seulement possible? Comment? Je triture mon json sans arriver à mes fins...

2.) Ou faudrait-il encrypter à la volée tout l'array Json? Et dans ce cas, comment modifier ma fct php crypt2 ci-dessus, ainsi que la fct Java ci-dessous (toutes les 2 gérant des string, et non des arrays)?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public static String decrypt2Password(byte[] encrypted, String password) throws GeneralSecurityException 
{
    SecretKeySpec skeySpec = new SecretKeySpec(password.getBytes(), "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.toString();
    return new String(decrypted);
}
Voilà, comme d'hab, tout avis éclairé sera bon à prendre.
Merci.