国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何使用PHP生成以太坊錢包和密鑰對(duì)?

hufeng / 1729人閱讀

摘要:本文將提供有關(guān)如何生成私鑰的指南,然后使用導(dǎo)出到以太坊錢包地址。為了獲得以太坊錢包地址的正確哈希值,我們需要?jiǎng)h除前導(dǎo)。以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和交易等。

本文將提供有關(guān)如何生成ECDSA私鑰的指南,然后使用PHP7.0++導(dǎo)出到以太坊錢包地址。

你可以找到以下工作實(shí)現(xiàn):

composer.json

{
    "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"
    }
}

GenerateEthereumWallet.php

 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);
// 轉(zhuǎn)換為橢圓曲線私鑰格式
$ec_priv_key = ECPrivateKey::fromPEM($priv_pem);
// 然后將其轉(zhuǎn)換為ASN1結(jié)構(gòu)
$ec_priv_seq = $ec_priv_key->toASN1();
// HEX中的私鑰和公鑰
$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;
// 從公鑰導(dǎo)出以太坊地址
// 每個(gè)EC公鑰始終以0x04開頭,
// 我們需要?jiǎng)h除前導(dǎo)0x04才能正確hash它
$pub_key_hex_2 = substr($pub_key_hex, 2);
$pub_key_len_2 = strlen($pub_key_hex_2) / 2;
// Hash
$hash = Keccak::hash(hex2bin($pub_key_hex_2), 256);
// 以太坊地址長(zhǎng)度為20個(gè)字節(jié)。 (40個(gè)十六進(jìn)制字符長(zhǎng))
// 我們只需要最后20個(gè)字節(jié)作為以太坊地址
$wallet_address = "0x" . substr($hash, -40);
$wallet_private_key = "0x" . $priv_key_hex;
echo "
   ETH Wallet Address: " . $wallet_address;
echo "
   Private Key: " . $wallet_private_key;
代碼條件

該代碼需要PHP 7.0++,OpenSSL擴(kuò)展和PHP Composer。需要使用PHP Composer來(lái)安裝第三方軟件包。

$ composer install
生成私鑰

以太坊標(biāo)準(zhǔn)是使用secp256k1曲線生成私鑰。在我的教程中,我使用OpenSSL函數(shù)生成PEM格式的橢圓曲線私鑰,如下所示:

$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;
}
// Generate Private Key
openssl_pkey_export($res, $priv_key);
// PEM Format
$priv_pem = PEM::fromString($priv_key);

之后我需要將私鑰轉(zhuǎn)換為ASN1序列,下面是ANS1序列的結(jié)構(gòu)。

ECPrivateKey ::= SEQUENCE {
    version        INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
    privateKey     OCTET STRING,
    parameters [0] ECParameters {{ NamedCurve }} OPTIONAL,
    publicKey  [1] BIT STRING OPTIONAL
}

下面的代碼是我如何從ANS1序列結(jié)構(gòu)中查詢十六進(jìn)制字符串中的公鑰和私鑰。

// Then convert it to ASN1 Structure
$ec_priv_seq = $ec_priv_key->toASN1();
// Private Key & Public Key in HEX
$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;
衍生以太坊錢包地址

以太坊錢包地址來(lái)自公鑰。每個(gè)EC公鑰始終以0x04開頭。為了獲得以太坊錢包地址的正確哈希值,我們需要?jiǎng)h除前導(dǎo)0x04。

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

我們繼續(xù)使用EC公鑰的Keccak256哈希。 以太坊錢包地址長(zhǎng)度為20個(gè)字節(jié),長(zhǎng)度為40個(gè)字符,因此我們只需要哈希數(shù)據(jù)的最后20個(gè)字節(jié)。

$hash = Keccak::hash(hex2bin($pub_key_hex_2), 256);
$wallet_address = "0x" . substr($hash, -40);
$wallet_private_key = "0x" . $priv_key_hex;

現(xiàn)在你有$wallter_address**存儲(chǔ)你新生成的以太坊錢包地址,**$wallet_private_key是你以太坊錢包地址的私鑰。

如何運(yùn)行代碼
$ php GenerateEthereumWallet.php

它將輸出以太坊錢包地址及其私鑰,如下所示:

ETH Wallet Address: 0xb2...
Private Key: 0x73...

======================================================================

分享一些以太坊、EOS、比特幣等區(qū)塊鏈相關(guān)的交互式在線編程實(shí)戰(zhàn)教程:

php以太坊,主要是介紹使用php進(jìn)行智能合約開發(fā)交互,進(jìn)行賬號(hào)創(chuàng)建、交易、轉(zhuǎn)賬、代幣開發(fā)以及過濾器和交易等內(nèi)容。

php比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)、去中心化共識(shí)機(jī)制、密鑰與腳本、交易與UTXO等,同時(shí)也詳細(xì)講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Php工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。

python以太坊,主要是針對(duì)python工程師使用web3.py進(jìn)行區(qū)塊鏈以太坊開發(fā)的詳解。

java以太坊開發(fā)教程,主要是針對(duì)java和android程序員進(jìn)行區(qū)塊鏈以太坊開發(fā)的web3j詳解。

以太坊入門教程,主要介紹智能合約與dapp應(yīng)用開發(fā),適合入門。

以太坊開發(fā)進(jìn)階教程,主要是介紹使用node.js、mongodb、區(qū)塊鏈、ipfs實(shí)現(xiàn)去中心化電商DApp實(shí)戰(zhàn),適合進(jìn)階。

C#以太坊,主要講解如何使用C#開發(fā)基于.Net的以太坊應(yīng)用,包括賬戶管理、狀態(tài)與交易、智能合約開發(fā)與交互、過濾器和交易等。

EOS教程,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā),內(nèi)容涵蓋EOS工具鏈、賬戶與錢包、發(fā)行代幣、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識(shí)點(diǎn),最后綜合運(yùn)用各知識(shí)點(diǎn)完成一個(gè)便簽DApp的開發(fā)。

java比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)、去中心化共識(shí)機(jī)制、密鑰與腳本、交易與UTXO等,同時(shí)也詳細(xì)講解如何在Java代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Java工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。

匯智網(wǎng)原創(chuàng)翻譯,轉(zhuǎn)載請(qǐng)標(biāo)明出處。這里是原文

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/29581.html

相關(guān)文章

  • 如何使用PHP生成以太錢包密鑰對(duì)

    摘要:本文將提供有關(guān)如何生成私鑰的指南,然后使用導(dǎo)出到以太坊錢包地址。為了獲得以太坊錢包地址的正確哈希值,我們需要?jiǎng)h除前導(dǎo)。以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和交易等。 本文將提供有關(guān)如何生成ECDSA私鑰的指南,然后使用PHP7.0++導(dǎo)出到以太坊錢包地址。 你可以找到以下工作實(shí)現(xiàn): composer.json { requ...

    Aceyclee 評(píng)論0 收藏0
  • Python生成以太比特幣vanity虛榮地址

    摘要:分享一些以太坊比特幣等區(qū)塊鏈相關(guān)的交互式在線編程實(shí)戰(zhàn)教程以太坊,主要是針對(duì)工程師使用進(jìn)行區(qū)塊鏈以太坊開發(fā)的詳解。這里是原文如何用為以太坊和比特幣生成虛擬地址 今天,我們將編寫一個(gè)非常簡(jiǎn)單的python腳本來(lái)生成虛榮地址,這些地址是以某個(gè)短語(yǔ)或字母序列開頭的加密貨幣地址。該過程涉及生成私鑰并檢查目標(biāo)短語(yǔ)的地址,直到找到滿意的地址。 安裝包 首先,我們需要安裝一些可以執(zhí)行計(jì)算的軟件包,以便...

    MAX_zuo 評(píng)論0 收藏0
  • Android App 如何生成以太錢包

    摘要:以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和事件等。 Android應(yīng)用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來(lái)應(yīng)該也比較清楚: 1.在app/build.gradle中集成以下依賴項(xiàng): compile (org.web3j:core-android:2.2.1) web3j核心是用于從服務(wù)器下載以太坊區(qū)塊鏈數(shù)據(jù)的核心...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • Android App 如何生成以太錢包

    摘要:以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和事件等。 Android應(yīng)用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來(lái)應(yīng)該也比較清楚: 1.在app/build.gradle中集成以下依賴項(xiàng): compile (org.web3j:core-android:2.2.1) web3j核心是用于從服務(wù)器下載以太坊區(qū)塊鏈數(shù)據(jù)的核心...

    _ipo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<