Cette fois je vous amène du Node.Js pour générer une adresse Bitcoin (avec code). Quelles sont les précautions pour générer une adresse Bitcoin avec Node.Js Voici un cas pratique, jetons un oeil.
En utilisant Node.js, l'IDE utilise 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
Générer une adresse Bitcoin
1. Générez une clé privée aléatoire La clé privée est un nombre de 32 octets. Par exemple :
<🎜. >8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD63 32671FA445C4DD3 2. Clé publique de calcul de courbe elliptique Après avoir généré la clé privée, nous utilisons l'algorithme de chiffrement de courbe elliptique (ECDSA-secp256k1) pour calculer la clé publique non compressée correspondant au clé privée La clé publique générée. est 65 octets au total. 0459DEE66AB619C4A9E215D070052D1AE3A2075E5F58C67516B2E4884A88C79BE9A5FA8CCD255FB0A7A75DB985072968C72B036 ED97BA2EF2DECE2ABCA5BE14 7923. Calculer la valeur de hachage SHA-256 de la clé publiqueae9c74647a8c2f50fd832e397e36dbad05d86db3fe3d959a7c8a07c 1ddda40c6
< 🎜> 🎜>0005f9d05358aab2a28f19910036e67a7295b14aac
En fait, c'est presque la même chose, qui est l'adresse compressée finalement générée par le code ci-dessus.
Mais dans le Bitcoin réel, la vérification est également ajoutée6. Calculer la valeur de hachage SHA-2569f35b0c37977a302512c22f586dd8da4ae1d20399f2ad3f75df23fbc024b4 b2d4b4f9bc87616687957db64efaf4efb2c00d1d93d549a0b70b15812936046d0ac7 . Calculez à nouveau la valeur de hachage SHA-256
8. Système hexadécimal à 8 chiffres)4b4f9bc89. Ajoutez ces 4 octets à la fin de l'adresse de compression générée à l'étape 5
0005f9d05358aab2a28f19910036e67a7295b14aac4 b4f9bc8
10. Encoder avec Base58
Base58 se compose de 1 à 9 et de caractères anglais sauf i, l, 0, o. Encodez en base58 le résultat de l'étape précédente et obtenez :1YbeKoyePe8gxyAYh4E3Qyqb15NnepmodJe pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez faire attention aux autres sites Web chinois php Articles connexes ! Lecture recommandée :Analyse de cas pratique de déduplication de chaînes et de tableauxComment express + mock fonctionne dans le parallélisme front et backend Développement
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!