如何操作Node.Js生成比特币地址
这次给大家带来如何操作Node.Js生成比特币地址,操作Node.Js生成比特币地址的注意事项有哪些,下面就是实战案例,一起来看一下。
使用Node.js,IDE采用sublime 3。
var randomBytes = require('randombytes') var BigInteger = require('bigi') var ecurve = require('ecurve') var crypto = require('crypto') var cs = require('coinstring') var secp256k1 = ecurve.getCurveByName('secp256k1') var randombytes = randomBytes(32).toString('hex') var privateKey = new Buffer(randombytes, 'hex') console.log("私钥:" + privateKey.toString('hex')) var ecparams = ecurve.getCurveByName('secp256k1') var curvePt = ecparams.G.multiply(BigInteger.fromBuffer(privateKey)) var x = curvePt.affineX.toBuffer(32) var y = curvePt.affineY.toBuffer(32) var publicKey = Buffer.concat([new Buffer([0x04]), x, y]) console.log("标准地址:" + publicKey.toString('hex')) //compressed publicKey = curvePt.getEncoded(true) //true forces compressed public key console.log("compressed:" + publicKey.toString('hex')) var sha = crypto.createHash('sha256').update(publicKey).digest() var pubkeyHash = crypto.createHash('rmd160').update(sha).digest() // pubkeyHash of compressed public key console.log("pubkeyHash:" + pubkeyHash.toString('hex')) // address of compressed public key console.log("压缩地址:" + cs.encode(pubkeyHash, 0x0)) //<-- 0x0 is for public addresses //这里还缺失校验和Base58编码 console.log(cs.encode(privateKey, 0x80)) //<--- 0x80 is for private addresses console.log(cs.encode(Buffer.concat([privateKey, new Buffer([0])]), 0x80)) // <-- compressed private address
生成比特币地址
1.生成随机私钥,私钥是一个32字节的数 例如:
8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA445C4DD3
2.椭圆曲线计算公钥 生成了私钥之后,我们使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥,生成的公钥共65字节, 第一个字节是0x04,后32个字节是X坐标,32个字节是Y坐标: 公钥P.X:
59DEE66AB619C4A9E215D070052D1AE3A2075E5F58C67516B2E4884A88C79BE9 公钥P.Y: A5FA8CCD255FB0A7A75DB985072968C72B036ED97BA2EF2DECE2ABCA5BE14792
公钥:
0459DEE66AB619C4A9E215D070052D1AE3A2075E5F58C67516B2E4884A88C79BE9A5FA8CCD255FB0A7A75DB985072968C72B036ED97BA2EF2DECE2ABCA5BE14792
3.计算公钥的SHA-256哈希值
ae9c74647a8c2f50fd832e397e36dbad05d86db3fe3d959a7c8a07c1ddda40c6
4.计算 RIPEMD-160哈希值
05f9d05358aab2a28f19910036e67a7295b14aac
5.加入地址版本号(比特币主网 0x00)
0005f9d05358aab2a28f19910036e67a7295b14aac
其实这里就差不多了,也就是上面代码最后生成的压缩地址。
但在实际比特币中,还要加上校验
6.计算 SHA-256 哈希值
9f35b0c37977a302512c22f586dd8da4ae1d20399f2ad3f75df23fbc024b4b2d
7.再次计算 SHA-256 哈希值
4b4f9bc87616687957db64efaf4efb2c00d1d93d549a0b70b15812936046d0ac
8.取上一步结果的前4个字节(8位十六进制)
4b4f9bc8
9.把这4个字节加到第五步生成的压缩地址后边
0005f9d05358aab2a28f19910036e67a7295b14aac4b4f9bc8
10.用Base58编码
Base58由1-9和除i,l,0,o之外的英文字符组成。 对上一步的结果进行Base58编码,得到:
1YbeKoyePe8gxyAYh4E3Qyqb15Nnepmod
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是如何操作Node.Js生成比特币地址的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

LinuxDeploy的操作步骤及注意事项LinuxDeploy是一款强大的工具,可以帮助用户在Android设备上快速部署各种Linux发行版,让用户能够在移动设备上体验到完整的Linux系统。本文将详细介绍LinuxDeploy的操作步骤以及注意事项,同时提供具体的代码示例,帮助读者更好地使用这一工具。操作步骤:安装LinuxDeploy:首先在

想必很多的用户家里都有那么几台不用的电脑,因为长时间不用完全忘记了开机密码,于是想要知道一下,忘记密码要怎么操作呢?那就一起来看看吧。win10开机密码忘记按F2怎么操作1、按下电脑的电源键,然后开机时按下F2(不同电脑品牌进入bios的按键也不同)。2、在bios界面中,找到security选项(不同品牌电脑的位置可能有所不同)。一般都在顶部的设置菜单中。3、然后找到SupervisorPassword选项并且点击。4、这时候用户就可以看到自己的密码了,同时找到旁边的Enabled切换为Dis

随着智能手机的普及,截屏功能成为日常使用手机的必备技能之一。华为Mate60Pro作为华为公司的旗舰手机之一,其截屏功能自然也备受用户关注。今天,我们就来分享华为Mate60Pro手机的截屏操作步骤,让大家能够更加便捷地进行截屏操作。首先,华为Mate60Pro手机提供了多种截屏方式,可以根据个人习惯选择适合自己的方式进行操作。下面详细介绍几种常用的截

PHP字符串操作:有效去除空格的实用方法在PHP开发中,经常会遇到需要对字符串进行去除空格操作的情况。去除空格可以使得字符串更加整洁,方便后续的数据处理和显示。本文将介绍几种有效的去除空格的实用方法,并附上具体的代码示例。方法一:使用PHP内置函数trim()PHP内置函数trim()可以去除字符串两端的空格(包括空格、制表符、换行符等),非常方便且简单易用

饿了么这款软件里面汇集了各种不同的美食,大家可以在线挑选下单,商家接单后就会立即进行制作,用户们可以通过软件来绑定微信,想要了解具体的操作方法的话,记得来PHP中文网看看哦。饿了么绑定微信方法说明1、首先打开饿了么软件,进入到首页中后我们点击右下角的【我的】;2、然后在我的页面中我们需要点击左上角的【账号】;3、接着来到个人资料的页面中我们可以绑定手机、微信、支付宝、淘宝,在这里我们点击【微信】;4、最后点击过后在微信授权的页面中选好需要绑定的微信号之后点击【允许】即可;

1.PDO简介PDO是PHP的一个扩展库,它提供了一个面向对象的方式来操作数据库。PDO支持多种数据库,包括Mysql、postgresql、oracle、SQLServer等。PDO使开发人员能够使用统一的api来操作不同的数据库,这使得开发人员可以在不同的数据库之间轻松切换。2.PDO连接数据库要使用PDO连接数据库,首先需要创建一个PDO对象。PDO对象的构造函数接收三个参数:数据库类型、主机名、数据库用户名和密码。例如,以下代码创建了一个连接到mysql数据库的对象:$dsn="mysq
