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

Langage PHP Discussion :

Chiffrement RSA Chiffre/Déchiffrer [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut Chiffrement RSA Chiffre/Déchiffrer
    Bonjour,

    Pour un besoin, je dois chiffrer des données dans ma base de données, pour pouvoir les utilisés plus tard.

    Pour cela, j'ai choisi d'utilisé une clé RSA. Pour cela, j'ai généré un fichier .pem avec open ssl, ensuite je l'importe dans mon PHP, et j'utilise la clé pour chiffrer/déchiffrer :

    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
     
    $res = openssl_pkey_get_public( file_get_contents( "key.pem" ) );
     
    openssl_pkey_export($res, $privkey);
     
    $pubkey=openssl_pkey_get_details($res);
    $pubkey=$pubkey["key"];
     
     
    openssl_public_encrypt("hello world", $crypted, $pubkey);
    echo $crypted;
     
    echo "<br />";
     
    openssl_private_decrypt($crypted, $decrypted, $privkey);
    echo $decrypted;
    Malheureusement mon pubkey est vide, il ne contient strictement aucune donnée, forcément, le reste ne marche pas...

    Si vous avez une solution.

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Ton fichier key.pem est au même endroit que ton fichier php ? Sinon tu as des erreurs affichés par ton code ?

    @+

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Oui, en effet, mon fichier key.pem est dans le même dossier que le fichier php.

    Pour l'import du fichier, je n'ai pas d'erreur, c'est pour la suite, les fonction ou je dois passé ma key que j'ai l'erreur, logique, vue qu'elle est vide.


    Warning: openssl_pkey_export(): cannot get key from parameter 1 in /Applications/WAMP/htdocs/project/index.php on line 4

    Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in /Applications/WAMP/htdocs/project/index.php on line 6

    Warning: openssl_public_encrypt(): key parameter is not a valid public key in /Applications/WAMP/htdocs/project/index.php on line 10


    Warning: openssl_private_decrypt(): key parameter is not a valid private key in /Applications/WAMP/htdocs/project/index.php on line 15

  4. #4
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Je pense que le soucis viens de ton file_get_contents();

    Dans la doc il donne les informations pour donner la clé public : http://php.net/manual/fr/function.op...get-public.php

    Essaye en mettant le chemin absolue vers le fichier en question.

    @+

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Pourtant, si le chemin n'était pas bon, j'aurais un "failed to open stream".

    Je viens d'utiliser un chemin absolue, cela ne change rien.

  6. #6
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Votre code ressemble à un truc du genre du coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = openssl_pkey_get_public( 'C:\\Applications\\WAMP\\htdocs\\project\\key.pem' );
    Même si sous windows il y a peu de chance vérifié tout de même les droits sur le fichier key.pem.

    @+

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Pour les droits, je viens de vérifier c'est ok.

    Pour ce qui est du chemin absolu en supprimant le file get content, j'ai toujours les mêmes erreurs qu'au dessus. Je ne comprend pas trop d'ou viens l'erreur... J'ai bien ma clé RSA dans mon fichier key.pem, je le charge bien, aucune erreur sur un mauvais chargement de fichier, que ce soit en relatif ou absolue.

  8. #8
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Tu peux remettre ton code modifié s'il te plaît, mais l'erreur est bien au niveau de la récupération de la clé public car il le dit dans le premier message d'erreur que tu as eu.

    @+

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Pas de souci, voilà tout :

    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
     
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $p = "";
    $res = openssl_pkey_get_public("/Applications/MAMP/htdocs/project/key.pem");
     
    openssl_pkey_export($res, $privkey);
     
    $pubkey=openssl_pkey_get_details($res);
    $pubkey=$pubkey["key"];
     
     
    openssl_public_encrypt("hello world", $crypted, $pubkey);
    echo $crypted;
     
    echo "<br />";
     
    openssl_private_decrypt($crypted, $decrypted, $privkey);
    echo $decrypted;
    ?>
    Les erreurs :

    Warning: openssl_pkey_export(): cannot get key from parameter 1 in /Applications/MAMP/htdocs/project/test.php on line 7

    Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in /Applications/MAMP/htdocs/project/test.php on line 9

    Warning: openssl_public_encrypt(): key parameter is not a valid public key in /Applications/MAMP/htdocs/project/test.php on line 13


    Warning: openssl_private_decrypt(): key parameter is not a valid private key in /Applications/MAMP/htdocs/project/test.php on line 18
    J'ai fais une simple page de teste sur mac pour éviter tout souci, j'ai vérifié le chemin absolue, c'est bon, voilà le contenu de mon fichier pem, généré avec openSSL.

    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEA5qcbMDlCeueNdbantVUAelKmrpNESoYBxfxzQ5OzDEZCzgx0
    LAwisuQIO2odr9kpzKukwRyBcQN6vTTz8h+KgDvIKSj8qdaMr4pqxmrGbkK3uwpv
    FsA2lpv9dJPHtPyI/iRdsodhLFp9f/xxF+CAxGB7/JsBKKkgECqwQjnDeGSkrU68
    zYYozNaWsEHTaLAFSDuMe00PV3A0ILBqYOean1WSJlMZXWmDnaa7QrX92xTKaZmV
    3NRCDwp/JGGAOd94n+A0ICGoaUVOPJyOB/TeKqwRbSxMJDKb93hH1pRgyNf5k9ZC
    mP/cCzQKo9mmriUDNNSbdkNaE4zBmMbMMQcOtQIDAQABAoIBAGdMedG8Izj2ERWi
    CzQb8I3YDExtKg2SPKMV7+1Y7bxWjz7GtxSvDq89jy5E1SzXPnAqgyv1f0dE/qhU
    WdibJaVOoNNGRvotW26WuEFKurnQ6YY8Iwp2ZTxIelfGg49b9mKTmN8G4I9Dq6cx
    QNkns6O/bmfwZ7F1JSX4aF4QjqmQ18LXUZ8m2l2ZKDVXyVApL79elIqDiAPt/BYr
    dFCmn+wVWAFtC/8F9ZcB4h3HuqIB3wLSnvSiK1CJVDVgRzp2lc0/gqq8feshCgci
    9x7LaB18iJ1xdmCO5QKk2m1RP8M12tJPl0pUNMoVwmPqP8ak197zJgq42udqSx0k
    D7oqNpUCgYEA9EdzmpWTRFzCERojjR21E2wKz2puRiSeWRVfAIE1ONLYoPbLo1cY
    UFvoxPMZ45LQK0ZtD44FU3x5uXMZzfhZWx/IWKfN6EUPu3C6U2XFdnXey1uMWnu+
    t/MpAdy0zylS7/QuqymJhr/GNf1r3igHA95wdQoIxNFNNKhaZ5RxFEcCgYEA8bhH
    Q+YdWvdT9XEjDqfUnL7s1qEbDOvFKjrmkImg4XK1wbADRDQyBbpoNMfwqvKxIdJ0
    cItP2AUbLycr3if4Ua1L9GU5e5tsFa1xpJl1ZDE1AzS/Z+b6fh8a2neLAhbtbmEE
    qu4IJ9U7bkGmKAoniOlkV5BSSvHfhDjZev/F7yMCgYATIAD6ClnkUUrUYfKEmt3R
    bnUONiv6C+Xl3Zl5haQwFbnmKExbNndt2zRHLy1ItvbbXIEvZZQfLDCvh0Zu7NG6
    I6vg3Qpu8/E+YJ4F54LlOmc+DqXXc7bD2iLMxYXWbkrTBJAe0Hq29Q7ErVmjpAig
    kerGDwoOtsBPrhqd325XAwKBgEQ9qDDtGECELrnONP2AODAAXtDBLufY8BLaChmo
    ITlErzd9P47TxYOEesLb53/7gDJyPdlAG0x7NI99WY8gbaRxbk4S/cV9vWfpTXoQ
    sOmWUscS7y6gMPvGQEiJEz+FxYYx8aVoCflk46Be/E+1fi/S5DcsUW9DFb04Z32o
    E/NNAoGBAOvISBj9wncpGkWUjiZKoOh90/iMb52yhS/pL8LQJSojvqPVwJbjT77O
    YMkFBK4XwUtYQduiF6oE452cunJaUF5uprNn6qHmt3/jf3pGctuKHpjxWI3k/xqR
    fkRDf/MjJMzsmeBnvZQPsLvDHEjcYzTJsJXhAsAVLcwDM0p59Z0Q
    -----END RSA PRIVATE KEY-----

  10. #10
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    EDIT : tu as bien généré un certificat X.509 ?

    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    if( openssl_pkey_get_public("/Applications/MAMP/htdocs/project/key.pem") )
            echo 'ok';
    else
            echo 'ko : impossible de charger la clé public';
    Et dis-nous ce qu'affiche ton application.

    @+

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Ah oui, en effet, impossible de charger la clé public... Je ne comprend pas pourquoi.

    Une idée peut être ?

  12. #12
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Pas impossible que votre clé ne soit pas au bon format comme précisé dans la documentation PHP de la fonction.

    Essayé de générer un nouveau certificat en X.509 si ce n'est pas déjà le cas.

    @+

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    J'ai généré la clé autrement sous openSSL, c'est bon, plus de souci, je te remercie pour l'aide et le temps passé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chiffrement RSA - stockage des clés
    Par oieretxe dans le forum Android
    Réponses: 9
    Dernier message: 07/04/2015, 22h59
  2. Chiffrement RSA - Problème avec des caractères accentués
    Par HommeDeJava dans le forum Sécurité
    Réponses: 10
    Dernier message: 01/02/2012, 17h14
  3. chiffrement RSA en java
    Par LadyN dans le forum Sécurité
    Réponses: 3
    Dernier message: 26/03/2010, 10h09
  4. Chiffrement RSA : PHP et Java
    Par tagadapouetfr dans le forum Langage
    Réponses: 6
    Dernier message: 17/07/2009, 09h49
  5. Faire du chiffrement RSA avec SATSA
    Par skip78 dans le forum Java ME
    Réponses: 3
    Dernier message: 01/06/2009, 16h58

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