电商| 物流| 科技| 创业| 经商| 运营| 科普| 财经| 文娱| AI| 物联| 品牌| 会议| 政策| 时尚| 健康| 家居| 金融| 农业| 汽车| 房产| 百科| 生活| 游戏| 管理| 快讯
 
首页 » 资讯 » 电商 » B2B » 用 Python 实现密钥和比特币地址

用 Python 实现密钥和比特币地址

放大字体  缩小字体 时间:2022-01-05 09:42    来源:imtoken官网钱包  热度:118
最全面的比特币 Python 库是 Vitalik Buterin 写的 pybitcointools。在例4-4 中,我们。。。
 最全面的比特币 Python 库是 Vitalik Buterin 写的 pybitcointools。在例4-4 中,我们使用 pybitcointools 库(导入为“bitcoin”)来生成和显示不同格式的密钥和比特币地址。

例 4-4 使用 pybitcointools 库的密钥和比特币地址的生成和格式化过

import bitcoin

# Generate a random private key

valid_private_key = False while not valid_private_key: private_key = bitcoin.random_key() decoded_private_key =

bitcoin.decode_privkey(private_key, 'hex')

valid_private_key= 0<decoded_private_key<bitcoin.N

print "Private Key (hex) is: ", private_key

print "Private Key (decimal) is: ",decoded_private_key

# Convert private key to WIF format wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif') print "Private Key (WIF) is: ",wif_encoded_private_key

# Add suffix "01" to indicate a compressed private key compressed_private_key = private_key + '01'

print "Private Key Compressed (hex) is: ", compressed_private_key

# Generate a WIF format from the compressed private key (WIF-compressed)

wif_compressed_private_key = bitcoin.encode_privkey( bitcoin.decode_privkey(compressed_private_key, 'hex'),

'wif')

print "Private Key (WIF-Compressed) is: ", wif_compressed_private_key

#MultiplytheECgeneratorpointGwiththeprivatekeyto get a public keypoint

public_key = bitcoin.base10_multiply(bitcoin.G, decoded_private_key)print"PublicKey(x,y)coordinatesis:", public_key

# Encode as hex, prefix 04

hex_encoded_public_key = bitcoin.encode_pubkey(public_key,'hex') print "Public Key (hex) is:", hex_encoded_public_key

#Compresspublickey,adjustprefixdependingonwhethery is even orodd

(public_key_x,public_key_y)=public_keyif(public_key_y % 2) == 0:

compressed_prefix = '02' else:

compressed_prefix = '03' hex_compressed_public_key = compressed_prefix +

bitcoin.encode(public_key_x, 16) print "Compressed Public Key (hex) is:", hex_compressed_public_key

# Generate bitcoin address from public key print "Bitcoin Address (b58check) is:", bitcoin.pubkey_to_address(public_key)

#Generatecompressedbitcoinaddressfromcompressedpublic key

print "Compressed Bitcoin Address (b58check) is:", \ bitcoin.pubkey_to_address(hex_compressed_public_key)

例 4-5 显示了上段代码运行结果。

例 4-5 运 行
key-to-address-ecc-example.py

$ python key-to-address-ecc-example.py Private Key (hex) is:

3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13

e41daa6

Private Key (decimal) is:

265632300484379575922325538266636964406067566859201174768

32299673293013768870

Private Key (WIF) is: 5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K Private Key Compressed (hex) is:

3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13

e41daa601

Private Key (WIF-Compressed) is: KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S Public Key (x,y) coordinates is:

(41637322786646325214887832269588396900663353932545912953 362782457239403430124L,

163889351287812384055267104667247415937610851208643314490

66658622400339362166L)

Public Key (hex) is:

045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169 d9b9b00ec↵

243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02 ebfc176

Compressed Public Key (hex) is:

025c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169 d9b9b00ec

Bitcoin Address (b58check) is: 1thMirt546nngXqyPEz532S8fLwbozud8

Compressed Bitcoin Address (b58check) is: 14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3

例 4-6 是另外一个示例,使用的是 Python ECDSA 库来做椭圆曲线计算而非使

用 bitcoin 的库。

例 4-6 使用在比特币密钥中的椭圆曲线算法的脚本

import ecdsa import random

from ecdsa.util import string_to_number, number_to_string

# secp256k1, http://www.oid-info.com/get/1.3.132.0.10

_p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EFFFFFC2FL

_r = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8 CD0364141L

_b = 0x0000000000000000000000000000000000000000000000000000000

000000007L

_a = 0x0000000000000000000000000000000000000000000000000000000

000000000L

_Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815 B16F81798L

_Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08 ffb10d4b8L

curve_secp256k1 = ecdsa.ellipticcurve.CurveFp(_p, _a, _b)

generator_secp256k1 = ecdsa.ellipticcurve.Point(curve_secp256k1, _Gx, _Gy, _r) oid_secp256k1 = (1, 3, 132, 0, 10)

SECP256k1=ecdsa.curves.Curve("SECP256k1",curve_secp256k1, generator_secp256k1,

oid_secp256k1) ec_order = _r

curve = curve_secp256k1 generator = generator_secp256k1

def random_secret():

random_char = lambda: chr(random.randint(0, 255)) convert_to_int = lambda array:

int("".join(array).encode("hex"), 16)

byte_array = [random_char() for i in range(32)] return convert_to_int(byte_array)

def get_point_pubkey(point): if point.y() & 1:

key = '03' + '%064x' % point.x() else:

key = '02' + '%064x' % point.x() return key.decode('hex')

def get_point_pubkey_uncompressed(point): key='04'+\

'%064x' % point.x() + \ '%064x' % point.y()

return key.decode('hex')

# Generate a new private key. secret = random_secret() print "Secret: ",secret

# Get the public key point. point = secret * generator print "EC point:",point

print "BTC public key:", get_point_pubkey(point).encode("hex")

# Given the point (x, y) we can create the object using: point1 = ecdsa.ellipticcurve.Point(curve, point.x(), point.y(), ec_order)

assert point1 == point

例 4-7 显示了运行脚本的结果。

例 4-7 安装 Python ECDSA 库,运行 ec_math.py 脚本

running the ec_math.py script

$ # Install Python PIP package manager

$ sudo apt-get install python-pip

$ # Install the Python ECDSA library

$ sudo pip install ecdsa

$ # Run the script

$ python ec-math.py Secret:

380908350159543588624811326288874439059062049959123782780

60168703580660294000

EC point: (70048853531867179489857750497606966272382583471322935454

624595540007269312627,

105262206478686743191060800263479589329920209527285803935

736021686045542353380)

BTC public key: 029ade3effb0a67d5c8609850d797366af428f4a0d5194cb221d80777 0a1522873

关于用 Python 实现密钥和比特币地址的要点介绍,希望对大家了解用 Python 实现密钥和比特币地址有所帮助,如有侵权,联系我们37442552@qq.com。
 
你可能感兴趣:
 
B2B电商模式:传统行业电商的B2B模式思考
B2B电商模式:传统行业电商的B2B模式思考

2016-06-07 B2B B2B模式

当今的互联网领域可谓风云变幻,各种模式也比比皆是,随着一些交易模式或者盈利模式被残酷的淘汰出局,B2B又变成了被讨论或者是一些企业策划包装的救命稻草,…

B2B生鲜电商新锐鲜易网杀入沈阳 开拓新市场
B2B生鲜电商新锐鲜易网杀入沈阳 开拓新市场

2016-06-07 B2B 生鲜电商 鲜易网

B2B生鲜电商新锐鲜易网杀入沈阳 开拓新市场;鲜易网打造全国百城餐饮生鲜食材电商平台沈阳站开通,同时覆盖沈阳市所有地区的食材采购配送服务也正式启动。这…

银基集团转战B2B市场 启动“品汇壹号·云合伙”

2016-06-07 B2B 银基集团 品汇壹号

银基集团转战B2B市场 启动“品汇壹号·云合伙”项目;品汇壹号计划搭建一个由银基、城市合伙人、B端会员、资本、银行等组成的云平台,这一平台可以让每个合作…

B2B服务都包括哪些组成部分?SaaS服务、B2B电商

2016-06-07 B2B B2B电商 供应链金融

IDG资本创始合伙人熊晓鸽曾预测,B2B将诞生下一个BAT。根据艾媒咨询2016年6月3日发布的报告:2015年中国B2B市场处于上升通道,B2B电子商务交易规模达12.31万…

跳出传统B2B模式 建材家居类电商新贵--国通商城

2016-06-07 B2B 建材家居类电商 国通商城

跳出传统B2B模式 建材家居类电商新贵--国通商城的辉煌战果;国通商城通过网站、APP、微官网、DM杂志等渠道,将商讯全方位而又精准化地传递到给潜在的合作伙伴…

生鲜农产品行业盛会 B2B蔬菜生鲜物流成热门话题
生鲜农产品行业盛会 B2B蔬菜生鲜物流成热门话题

2016-06-07 B2B B2B蔬菜生鲜物流

第四届生鲜农产品供应链创新峰会暨2016北京CED电商应用研讨会在北京召开,由中国物流与供应链联盟主办,是国内最具趋势引领力的生鲜农产品行业盛会。据悉,本…

B2B成跨境电商2.0时代发力点  跨境电商效果外贸增长红利将释放
B2B成跨境电商2.0时代发力点 跨境电商效果外贸

2016-06-10 B2B 跨境电商 2.0 时代

如果将依靠代购的海淘阶段定义为跨境电商1.0时代,那么,在行业快速发展整合走向成熟以及政策利好不断释放的当前,跨境电商则开始步入2.0时代。而在2.0时代,…

我国首个测绘地理信息行业B2B2C电商服务平台——“仪之宝”正式上线
我国首个测绘地理信息行业B2B2C电商服务平台—

2016-06-23 测绘地理信息 B2B2C 电商服务平台 仪之宝

我国首个测绘地理信息行业B2B2C电商服务平台仪之宝正式上线;记者从昨天召开的2016年中国测绘地理信息互联网大会获悉,我国首个测绘地理信息行业B2B2C电商服…

B2B跨境电商 中国B2B交易额将超过20万亿元预计

2016-06-25 B2B 跨境电商 B2B交易额

分享经济或共享经济的发展已成为新形势下,中国经济发展的又一大新动能。如果共享经济与时下中国经济的另一个风口跨境电商碰撞在一起,会产生怎样的化学反应…

酒仙网旗下酒仙团中国酒类电子商务b2b市场研讨会在昆明召开
酒仙网旗下酒仙团中国酒类电子商务b2b市场研讨

2016-06-25 酒仙网 酒仙团 b2b

酒仙网旗下酒仙团中国酒类电子商务b2b市场研讨会在昆明召开 据悉,酒仙网旗下酒仙团主办的中国酒类电子商务b2b市场发展研讨会在昆明召开。酒类产、销企业负责…

 
热点图文
B2B电商模式:传统行业电商的B2B模式思考

B2B电商模式:传统行业电商的B2B模式思考

B2B生鲜电商新锐鲜易网杀入沈阳 开拓新市场

B2B生鲜电商新锐鲜易网杀入沈阳 开拓新市场

生鲜农产品行业盛会 B2B蔬菜生鲜物流成热门话题

生鲜农产品行业盛会 B2B蔬菜生鲜物流成热门话题

B2B成跨境电商2.0时代发力点  跨境电商效果外贸增长红利将释放

B2B成跨境电商2.0时代发力点 跨境电商效果外贸增长红利将释放

我国首个测绘地理信息行业B2B2C电商服务平台——“仪之宝”正式上线

我国首个测绘地理信息行业B2B2C电商服务平台——“仪之宝”正式上线

酒仙网旗下酒仙团中国酒类电子商务b2b市场研讨会在昆明召开

酒仙网旗下酒仙团中国酒类电子商务b2b市场研讨会在昆明召开

外贸B2B发展趋势 解读外贸B2B平台的四大发展趋势

外贸B2B发展趋势 解读外贸B2B平台的四大发展趋势

淘宝收藏大师授权有什么影响

淘宝收藏大师授权有什么影响

 
经商宝 — 经商创业营销推广电子商务门户 网站地图 | 关于我们 | 特惠服务 | 人才招聘 | 联系我们 | 法律声明