主页 > imtoken钱包转usdt > 数字货币钱包密钥,钱包密码和私钥有什么关系,什么是数字货币钱包私钥
数字货币钱包密钥,钱包密码和私钥有什么关系,什么是数字货币钱包私钥
数字货币钱包密钥,钱包密码和私钥有什么关系,什么是数字货币钱包私钥
本文指导如何使用PHP7.0生成椭圆曲线数字签名私钥并导出到以太坊钱包地址。
你可以:
作曲家.json
{
要求:{
sop/asn1: ^3.3 ,
sop/加密代码:^0.2.0,
“标准操作程序/加密类型”:^0.2.1,
科恩卢纳/凯克:^1.0,
symfony/dotenv: ^4.0 ,
sc0vu/web3.PHP : 开发大师
}
}
生成以太坊钱包.php
“需要一次” provider/autoload.php;
使用 op\encryption type\asymmetric\EC\EC 公钥;
使用 op\encryption type\asymmetric\EC\EC 私钥;
使用sop\加密编码\PEM
用户角色列表 (kec cak
$配置=[
private_key_type = OpenSSL_key_type_EC,
曲线名称=secp256k1
];
$RES = OpenSSL_pkey_new($config);
如果(!$资源
'echo' 错误:无法生成私钥。 - .openssl_error_string(;
放弃;
}
//生成私钥
OpenSSL_pkey_export($res, $priv_key);
//获取公钥
$key_details = OpenSSL_pkey_get_details($RES);
$pub_key = $key_detail[key];
$priv_PEM = PEM:3360 来自字符串($priv_key);
//转换为椭圆曲线的私钥格式
$EC_priv_key = EC 私钥:来自 PEM ($priv_PEM) 的 3360;
//将其转换为ASN1结构
$EC_priv_seq = $EC_priv_key-to-asn1(;
// 十六进制的私钥和公钥
$priv_key_hex = bin 2 hex($EC_priv_seq-at(1)-asOctetString()-string));
$priv_key_len = strlen($priv_key_hex)/2;
$pub_key_hex=bin 2 hex($EC_priv_seq-at(3)-as tagged)-as explicit)-asBitString(string))。
$pub_key_len = strlen($pub_key_hex)/2;
// 从公钥导出以太网地址
//每个中东部邮政(政府)区公钥始终以 0x04 开头。
//为了正确混合,必须删除开头的0x04
$pub_key_hex_2 = substr($pub_key_hex, 2);
$pub_key_len_2 = strlen($pub_key_hex_2)/2;
// 散列
$hash = kec cak:3360 hash(hex 2 bin($pub_key_hex_2), 256);
//以太网地址的长度为20字节。 (十六进制字符长度为 40 个字符)
// 只需要最后 20 个字节作为以太网地址
$wallet_address = 0x.substr($hash, -40);
$wallet_private_key=0x.$priv_key_hex
echo \r\nethwalletaddress: .$ 钱包地址
echo \r\n私钥:.$ wallet_private_key
代码条件
此代码需要 PHP 7.0、OpenSSL 扩展和服务器端编程语言(专业超文本预处理器的缩写)合成器。 安装第三方包需要服务器端编程语言(Professional Hypertext Preprocessor 的缩写)合成器。
$作曲家安装
生成密钥
以太网标准使用 secp256k1 曲线生成私钥。在我的教程中,我使用 Heartbleed 函数为 privacy-enhanced mail-enhanced private email formats 生成椭圆曲线
私钥,如下:
$配置=[
private_key_type = OPENSSL_key_type_EC,
曲线名称=secp256k1
];
$RES = OpenSSL_pkey_new($config);
如果(!$res){
'echo' 错误:无法生成私钥。 - .OpenSSL_error_string();
放弃;
}
//生成私钥
openssl_pkey_export($res, $priv_key);
//PEM格式
$priv_PEM = PEM:来自字符串($priv_key);
之后我需要将私钥转换为ASN1序列,下面是ANS1序列的结构。
ECPrivateKey := 序列 {
版本整数 { ecprivkeyver 1(1) }(ecprivkeyver 1),
私钥八位字节串,
parameter[0] EC 参数 {{named curve}} 可选,
公钥[1]位串可选
}
下面的代码是我如何从 ANS1 序列结构中查询十六进制字符串中的公钥和私钥。
//然后转换成ASN1结构
$EC_priv_seq = $EC_priv_key-toasn 1();
//十六进制的私钥公钥
$priv_key_hex = bin 2 hex($EC_priv_seq-at(1)-asOctetString()-string());
$priv_key_len = strlen($priv_key_hex)/2;
$pub_key_hex = bin 2 hex($EC_priv_seq-at(3)-as tagged()-as explicit()-asBitString()-string());
$pub_key_len = strlen($pub_key_hex)/2;
派生的以太坊钱包地址
以太坊钱包地址来自公钥。 每个 Eastern Central Postal(政府)公钥始终以 0x04 开头。 为了获得以太坊钱包地址的正确哈希,我们需要删除前导 0x04。
$pub_key_hex_2 = substr($pub_key_hex, 2);
$pub_key_len_2 = strlen($pub_key_hex_2)/2;
我们继续使用 EC 公钥的 Keccak256 哈希。 以太坊钱包地址长度为 20 个字节和 40 个字符,因此我们只需要最后 20 个字节的哈希数据。
$hash = Keccak:hash(hex 2 bin($pub_key_hex_2), 256);
$wallet_address=0x。 substr($hash, -40);
$wallet_private_key=0x。 $priv_key_hex
现在你有 wallet_private_key 作为你的以太坊钱包地址的私钥。
如何运行代码
$ PHP 生成以太坊钱包.php
它将输出以太坊钱包地址及其私钥,如下所示:
ETH钱包地址:0xb2。
私钥:0x73。
================================================ == =====================
分享一些与以太坊、EOS、比特币等区块链相关的交互式在线编程教程:
以太坊,主要介绍使用php进行智能合约开发交互、账户创建、交易、转账、代币开发、过滤器和交易等。
使用 PHP 开发比特币的教程。 本课程面向初学者,涵盖了比特币的核心概念比特币核心钱包密钥在哪看,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,并详细讲解了如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发教程。
Python Ethereum,主要供python工程师使用web3.py开发区块链以太坊。
Java以太坊开发教程,主要针对Java和android程序员详细开发区块链以太坊web3j。
以太坊入门教程,主要介绍智能合约和dapp应用开发,适合初学者。
以太坊开发进阶教程主要介绍使用node.js、mongodb、blockchain、ipfs的去中心化电商DApp实战,适合进阶用户。
# C Ethereum,主要讲解如何使用C#开发基于。 Net,包括账户管理、状态与交易、智能合约开发与交互、过滤与交易等。
EOS教程。 本课程帮助您快速开始在 EOS 区块链上开发去中心化应用程序。 涵盖EOS工具链、账户钱包、代币发行、智能合约开发部署、代码与智能合约交互等核心知识点。 最后,综合运用所有知识点,开发一款笔记型DApp。
Java比特币开发教程。 本课程面向初学者,涵盖了比特币的核心概念比特币核心钱包密钥在哪看,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,并详细讲解了如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习教程。