返回
NEO学习笔记,从WIF到地址
见解分享
2023-11-23 00:37:17
2018年伊始,首先给大家拜个年,Happy Neo Year。新年伊始,总得写点什么,就打算继续开学习笔记系列,一点点仔细地分析NEO。今天就来说说从WIF到地址的这一串关系。
好了,写完了。^_^
当然,如果你想要搞清楚他们之间具体的计算方法,我们接着往下看。
很遗憾base58check是目前为止我最头疼的一个地方,对于前端开发来说,实现base58check是一件非常痛苦的事情,因为base58check里面涉及到了不少的数学运算。
本文将
- 解释NEO中的WIF、地址、私钥、公钥、哈希算法、数字签名和加密货币之间的关系。
- 提供从WIF到地址的计算过程的详细步骤和示例代码。
- 帮助读者理解NEO中的加密技术。
什么是WIF?
WIF的全称是Wallet Import Format,它是一种用于存储私钥的格式。WIF由51个字符组成,其中前33个字符是私钥,后18个字符是校验码。WIF的格式如下:
Base58(privkey || checksum)
其中:
- privkey是32字节的私钥。
- checksum是4字节的校验码。
什么是地址?
NEO地址是20字节的十六进制字符串。它是由公钥派生而来的。NEO地址的格式如下:
Base58(pubkey_hash)
其中:
- pubkey_hash是公钥的哈希值。
私钥和公钥是什么关系?
私钥和公钥是一对密钥。私钥是保密的,不能泄露给任何人。公钥是可以公开的。
私钥可以用来生成公钥,但是公钥不能用来生成私钥。
哈希算法是什么?
哈希算法是一种将任意长度的数据转换为固定长度的数据的函数。哈希算法具有以下特性:
- 单向性:给定一个哈希值,不可能找到与之对应的原始数据。
- 抗碰撞性:不可能找到两个具有相同哈希值的数据。
数字签名是什么?
数字签名是一种使用私钥对数据进行签名的技术。数字签名具有以下特性:
- 真实性:数字签名可以证明数据的来源。
- 完整性:数字签名可以保证数据在传输过程中没有被篡改。
加密货币是什么?
加密货币是一种使用密码学技术来确保安全性和匿名性的数字货币。加密货币具有以下特性:
- 去中心化:加密货币不受任何中央机构的控制。
- 安全性:加密货币使用密码学技术来确保安全。
- 匿名性:加密货币可以保护用户的隐私。
从WIF到地址的计算过程
从WIF到地址的计算过程如下:
- 将WIF解码为私钥。
- 使用私钥生成公钥。
- 对公钥进行哈希运算,得到公钥哈希值。
- 将公钥哈希值进行Base58编码,得到地址。
示例代码
import base58
import hashlib
import ecdsa
# 将WIF解码为私钥
wif = 'L1n4jDjEuG3DZG6CU28UZGHcjVudusDNrkvBq8ykxtM7Pfd3kEu'
privkey = base58.b58decode_check(wif)
# 使用私钥生成公钥
sk = ecdsa.SigningKey.from_string(privkey, curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()
# 对公钥进行哈希运算,得到公钥哈希值
pubkey_hash = hashlib.sha256(vk.to_string()).digest()
# 将公钥哈希值进行Base58编码,得到地址
address = base58.b58encode_check(pubkey_hash)
# 打印地址
print(address)
输出结果
AH9khdcDBEa9JH5f4eG32X5X53WkWXR6j