IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Discussion :

java/php cryptage et communication


Sujet :

Développement

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut java/php cryptage et communication
    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:

    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
    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;
    	}
    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
    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;
    	
    }
    Mon problème viens de la transmission car je n'arrive pas à encoder d'un coté puis décoder de l'autre.

    J'ai essayer diverses techniques mais sans succès.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Je déterre ce sujet parce qu'il m'intéresse aussi!
    Ou as-tu trouvé une solution depuis?

    EDIT: en fait pour être précis:

    -> mon appli android lance une url sur mon srv php avec des paramètres que php récupère en GET: ex toto.php?id=1223456&get=non

    -> et je souhaiterais donc pouvoir crypter les paramètres passées dans mon url, de façon à ce qu'ils ne circulent pas "en clair" sur le réseau

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Bonjour
    Je n'ai pas abouti sur ce sujet.
    Néanmoins je pense que c'est plus simple dans le cas d'une chaine de caractères.
    Mais ce que tu souhaites faire me fait penser à du HTTPS (sécurisé).
    Je n'ai pas plus d'infos.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Finalement j'ai crypté mes paramètres en Java directement dans l'URL avec Base64... et le srv php les décode de l'autre coté.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Donc avec une clé fixe, dans ce cas elle peut être trouvée facilement coté client.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Oui, mais:
    -> en fait aucun cryptage n'est 100% sûr, pour qui veut vraiment
    -> je code simplement des paramètres que je souhaite masquer au commun des mortels, pas des data ultra-sensibles

    Mais si qq'un a mieux à proposer, pas de soucis... je prends qd même!

Discussions similaires

  1. [PHP 5.4] Cryptage AES <-> Java / PHP
    Par karistote dans le forum Langage
    Réponses: 1
    Dernier message: 22/10/2014, 09h26
  2. communication java PHP comment faire
    Par sebac dans le forum Général Java
    Réponses: 5
    Dernier message: 17/08/2009, 15h29
  3. [PHP-JS] prob communication javascript et php
    Par samplaid dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/04/2006, 11h46
  4. [Java / PHP 5]Demande d'infos
    Par Jean_Benoit dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 07/03/2006, 09h23
  5. [PHP-JS] intégration java-php
    Par morticia2005 dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2005, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo