Passer au contenu principal

Comment générer une nouvelle adresse Ethereum en PHP

Mis à jour le
26 novembre 2025

5 minutes de lecture

Aperçu

PHP est très répandu pour le développement du backend de sites web ou d'applications web. Il bénéficie d'une large communauté de développeurs qui le considèrent comme leur langage de prédilection. Dans ce guide, nous allons voir comment générer une nouvelle adresse Ethereum en PHP.

Prérequis

  • PHP 7.0 ou version ultérieure, avec l'extension gmp installée.
  • Composer est installé
  • Un éditeur de texte
  • CLI

Qu'est-ce qu'une adresse Ethereum ?

Lorsque vous vous connectez à une plateforme sur Internet, vous devez vous authentifier à l’aide d’une combinaison d’identifiants. Considérez votre adresse Ethereum comme votre nom d’utilisateur et la clé privée correspondante comme votre mot de passe. Alors que votre adresse Ethereum est publique et peut être partagée, la clé privée doit toujours rester secrète. Cette combinaison vous permet d’interagir avec la blockchain Ethereum. Une adresse Ethereum correspond à votre identité sur la blockchain ; elle se présente sous la forme suivante : « 0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE ». Il est indispensable de disposer d’une adresse Ethereum valide pour :

  • Recevoir/envoyer des Ethereum
  • Signature/Envoi de transactions
  • Connexion aux applications décentralisées

Comment une adresse Ethereum est générée :

On commence par générer une clé privée aléatoire de 64 caractères (hexadécimaux) (256 bits / 32 octets). Par exemple :

0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893

Une clé publique de 128 caractères (hexadécimaux) (64 octets) est ensuite dérivée de la clé privée générée à l'aide de l'algorithme de signature numérique à courbe elliptique (ECDSA). Par exemple :

0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe

La fonction de hachage Keccak-256 est ensuite appliquée à la clé publique (128 caractères / 64 octets) afin d'obtenir une chaîne de hachage de 64 caractères (32 octets). Les 40 derniers caractères / 20 derniers octets de cette chaîne, préfixés par 0x, constituent l'adresse Ethereum finale. Par exemple :

0xd5e099c71b797516c10ed0f0d895f429c2781142

Remarque: dans la notation binaire, « 0x » indique que le nombre ou la chaîne de caractères est exprimé en hexadécimal.

Qu'est-ce que le PHP ?

PHP est un acronyme récursif signifiant « Hypertext Preprocessor » ; PHP est un langage de script côté serveur open source très répandu, généralement intégré au code HTML. Il sert à gérer les bases de données, le suivi des sessions et le contenu dynamique ; il fonctionne avec la quasi-totalité des bases de données courantes telles que MySQL, PostgreSQL, MS SQL Server, etc. Sa syntaxe s'inspire du langage C et il prend en charge des protocoles importants tels que LDAP, IMAP et POP3. PHP 4 a ajouté la prise en charge de Java et des architectures d'objets distribués (COM et CORBA), rendant ainsi possible pour la première fois le développement en n couches.

**
Exemples d'utilisation quotidienne de PHP
**

  • Pour définir et accéder aux variables des cookies.
  • Pour collecter des informations à partir de formulaires en ligne.
  • Pour exécuter des fonctions système telles que l'ouverture et la fermeture de fichiers.
  • Pour ajouter, supprimer et modifier des éléments dans des bases de données.
  • Ajout de restrictions par utilisateur sur les pages Web.

**
Voici quelques caractéristiques de PHP
**

  • Évolutivité
  • Flexibilité
  • Simplicité
  • Distinction entre majuscules et minuscules
  • Typage lâche
  • Interprété
  • Open Source

Installation de PHP et des autres dépendances

Avant d'installer les dépendances nécessaires à la génération d'une adresse, vérifions si PHP est bien installé sur notre système. Pour cela, copiez-collez la commande suivante dans votre terminal/cmd et exécutez-la.

$ php -v

Cela devrait afficher la version de PHP ; si celle-ci n'est pas installée, téléchargez la version de PHP adaptée à votre système d'exploitation en suivant les instructions figurant sur la page de téléchargement du site officiel de PHP.

Nous allons devoir installer l'extension PHP gmp ; vous pouvez soit la décommenter dans le fichier php.init, soit l'installer manuellement en suivant les instructions ci-dessous.

$ sudo apt-get install php-gmp

Remarque: il convient d'activer gmp en utilisant une seule des méthodes mentionnées ci-dessus. 

Pour Mac :

La réinstallation de PHP avec brew peut permettre d'activer l'extension gmp. Tapez les commandes suivantes :

$ brew reinstall php@7.2
$ export PATH="/usr/local/opt/php@7.2/bin:$PATH"
$ brew services restart php@7.2
$ php -info | grep "GMP"

Nous utiliserons Composer (un gestionnaire de dépendances pour PHP) pour gérer les bibliothèques et dépendances PHP nécessaires à la génération d'adresses et de clés. Vérifiez si Composer est installé sur votre système en exécutant la commande suivante dans votre terminal/cmd :

S'il n'est pas installé, téléchargez-le et installez-le en suivant les instructions de la page de téléchargement du site web de Composer.

Créez maintenant un fichier JSON nommé composer.json dans le répertoire de votre projet, puis copiez-collez-y le contenu suivant.

{
"require": {
"sop/asn1": "^3.3",
"sop/crypto-encoding": "^0.2.0",
"sop/crypto-types": "^0.2.1",
"kornrunner/keccak": "^1.0",
"symfony/dotenv": "^4.0",
"sc0vu/web3.php": "dev-master"
}
}

Enregistrez le fichier et installez les dépendances à l'aide de Composer :

$ composer install

Cela permettra d'installer les dépendances requises dans le répertoire.

Générer une adresse Ethereum en PHP

Créez maintenant un nouveau fichier PHP nommé Address.php dans ce répertoire, puis copiez-collez-y le code suivant.

<?

require_once "vendor/autoload.";

use Sop\CryptoTypes\Asymmetric\EC\ECPublicKey;
use Sop\CryptoTypes\Asymmetric\EC\ECPrivateKey;
use Sop\CryptoEncoding\PEM;
use kornrunner\Keccak;

$config = [
'private_key_type' => OPENSSL_KEYTYPE_EC,
'curve_name' => 'secp256k1'
];

$res = openssl_pkey_new($config);

if (!$res) {
echo 'ERROR: Fail to generate private key. -> ' . openssl_error_string();
exit;
}

openssl_pkey_export($res, $priv_key);

$key_detail = openssl_pkey_get_details($res);
$pub_key = $key_detail["key"];

$priv_pem = PEM::fromString($priv_key);

$ec_priv_key = ECPrivateKey::fromPEM($priv_pem);

$ec_priv_seq = $ec_priv_key->toASN1();

$priv_key_hex = bin2hex($ec_priv_seq->at(1)->asOctetString()->string());
$priv_key_len = strlen($priv_key_hex) / 2;
$pub_key_hex = bin2hex($ec_priv_seq->at(3)->asTagged()->asExplicit()->asBitString()->string());
$pub_key_len = strlen($pub_key_hex) / 2;

$pub_key_hex_2 = substr($pub_key_hex, 2);
$pub_key_len_2 = strlen($pub_key_hex_2) / 2;

$hash = Keccak::hash(hex2bin($pub_key_hex_2), 256);

$wallet_address = '0x' . substr($hash, -40);
$wallet_private_key = '0x' . $priv_key_hex;

echo "\r\n SAVE BUT DO NOT SHARE THIS (Private Key): " . $wallet_private_key;
echo "\r\n Address: " . $wallet_address . " \n";
?>

Explication du code ci-dessus

Ligne 1 : Lancement du script PHP avec la balise d'ouverture PHP.

Lignes 3 à 8 : Importation des dépendances installées.

Lignes 10 à 20 : Utilisation de la courbe secp256k1 pour générer la clé privée.

Ligne 22 : Génération de la clé privée.

Lignes 24-25 : Récupération de la clé publique.

Lignes 29 à 31 : conversion de la clé au format de clé privée de courbe elliptique, puis conversion de celle-ci en structure ASN.1.

Lignes 33 à 36 : récupération des clés privée et publique au format hexadécimal.

Lignes 38-39 : Pour obtenir l'adresse Ethereum à partir de la clé publique, il faut savoir que chaque clé publique commence toujours par 0x04,

en supprimant le 0x04 initial pour le hacher correctement.

Ligne 41 : Récupération de l'adresse au format hash.

Ligne 43 : Ajout du préfixe « 0x », extraction des 40 derniers caractères du hachage de l'adresse et stockage de ceux-ci dans la variable « wallet_address ».

Ligne 44 : Ajout du préfixe « 0x » à la clé privée et enregistrement de celle-ci dans la variable « wallet_private_key ».

Ligne 46 : Affichage de la clé privée accompagné d'un avertissement.

Ligne 47 : Affichage de l'adresse Ethereum précédée de la chaîne « Adresse : »

Enregistrez maintenant le fichier et exécutez le script.

$ php Address.php

Si tout se passe comme prévu, cela devrait ressembler à ça.

Conclusion

Félicitations, vous venez de générer votre propre adresse Ethereum en PHP ; vous pouvez l'utiliser pour créer de superbes portefeuilles décentralisés.

Abonnez-vous à notre newsletter pour découvrir d'autres articles et guides sur Ethereum. Si vous avez des commentaires, n'hésitez pas à nous contacter sur Twitter. Vous pouvez également discuter avec nous sur notre serveur Discord, où vous rencontrerez certains des développeurs les plus géniaux qui soient :)

Partager ce guide