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

Bibliothèques et frameworks PHP Discussion :

[PHP][OPENSSL] Erreur "error:04800064:PEM routines::bad base64 decode"


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 5
    Points : 7
    Points
    7
    Par défaut [PHP][OPENSSL] Erreur "error:04800064:PEM routines::bad base64 decode"
    Bonjour à tous,
    Je bute sur un truc qui me paraissait simple au départ et qui finalement ne fonctionne pas.
    J'ai généré un couple de clés publique-privée avec mkjwk.org.
    Je voudrais maintenant extraire la clé publique et la clé privé pour encrypter/décrypter.
    En parcourant les docs php (je suis en PHP8.2 sous Xampp/Windows), j'ai trouvé qu'on pouvait utiliser openssl_get_publickey en lui fournissant une clé publique au format PEM.
    J'ai aussi trouvé qu'il fallait découper en lignes de 64 caractères.
    J'ai essayé avec et sans le str_replace. L'erreur est la même : "error:04800064EM routines::bad base64 decode"
    Avec le str_replace la fonction base64_decode fonctionne.
    Malgré tout je reste avec mon erreur error:04800064EM routines::bad base64 decode

    J'ai le code suivant :
    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
     
    		var_dump(base64_decode($publicKey, true)) ;  // KO
    		$str = str_replace(['-', '_', ''], ['+', '/', '='], $publicKey) ;
    		var_dump(base64_decode($str, true) ) ;  // OK
     
    		echo "\n" ;
     
    		$str = chunk_split($str, 64, "\n");
    		var_dump($str) ;
     
    		var_dump(base64_decode($str, true) ) ; // OK
     
    		$key = "-----BEGIN PUBLIC KEY-----\n".$str."-----END PUBLIC KEY----\n";
     
    		var_dump($key) ;
     
    		var_dump (openssl_get_publickey($key)); // KO
     
    		var_dump(openssl_error_string());

    Si quelqu'un a des idées!

    Merci d'avance et bonne journée! (bonne reprise à ceux qui rentrent de congés!)

  2. #2
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Bonjour,

    Tu peux regarder le premier commentaire sur la doc php de Openssl qui montre un exemple simple en générant les clés directement en php :
    https://www.php.net/manual/en/book.o....php#usernotes

    L'exemple semble fonctionner correctement en générant les clés via le site mkjwk :
    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
    <?php
     
    // X.509 PEM Format
    $publickey = '-----BEGIN PUBLIC KEY-----
    MIIBI...
    -----END PUBLIC KEY-----';
     
    $privatekey = '-----BEGIN PRIVATE KEY-----
    MIIE...
    -----END PRIVATE KEY-----';
     
     
    $cleartext = '1234 5678 9012 3456';
     
    echo "Clear text:<br>$cleartext<BR><BR>";
     
    openssl_public_encrypt($cleartext, $crypttext, $publickey);
     
    echo "Crypt text:<br>$crypttext<BR><BR>";
     
    openssl_private_decrypt($crypttext, $decrypted, $privatekey);
     
    echo "Decrypted text:<BR>$decrypted<br><br>";

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2021, 15h19
  2. Réponses: 10
    Dernier message: 08/09/2009, 09h14
  3. [MySQL] Code PHP et erreur serveur Free : "Parse error: syntax error, unexpected '{' "
    Par mauriiice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/05/2009, 20h47
  4. Réponses: 3
    Dernier message: 19/04/2007, 11h34
  5. [PHP-JS] Erreur de type : Parse Error
    Par calitom dans le forum Langage
    Réponses: 6
    Dernier message: 19/07/2006, 23h10

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