首页
论坛
课程
招聘
filecoin通过私钥如何计算地址

rt,我折腾一天了,好蛋疼啊
如果通过filecoin私钥获取其地址呢,本来我是打算做个钱包软件的
但是卡在这里了
于是我找了一个web版钱包网站看了一下 地址-》》https://wallet.filfox.info/zh/recover/privateKey

 

如图所示
f1
5APyQvfwnxu+yZIlKr9sp4VQ7Va8+Rb0+Q+awgWhHNI= -》我的私钥
"e403f242f7f09f1bbec992252abf6ca78550ed56bcf916f4f90f9ac205a11cd2" -》这个是私钥进行base64解密然后在获取他的hex获得的字符串
f2

 

现在的问题就是web版钱包的js打包加密了
我无法解密,太蛋疼了
f3
上图的js地址---》https://wallet.filfox.info/dist/3d77e96.js
上面都是我的分析,希望大佬能帮帮我,最好可以写成php或者易语言(推荐,可能难度有点大,因为没有找到基本函数)
之前在百度也找了一下附上别人的分析思路,不过对方写的是生成过程,可能要逆向而行
https://blog.csdn.net/zgf1991/article/details/108403162
这个博主写的很清楚给我很大帮助,但是后面看不懂了....
最后说一下我的钱包都是没钱的!!!!!!!!!
附上我的私钥
7b2254797065223a22736563703235366b31222c22507269766174654b6579223a22515055417a6272383561436c31524d76333364713176344e74366d715a62725450636a6b563435547230433d227d
7b2254797065223a22736563703235366b31222c22507269766174654b6579223a227258586a6f686f514c635150387151394a5655644c6642676b466c36324476572b764b562b5576457874673d227d
7b2254797065223a22736563703235366b31222c22507269766174654b6579223a2235415079517666776e78752b795a496c4b72397370345651375661382b5262302b512b6177675768484e493d227d
7b2254797065223a22736563703235366b31222c22507269766174654b6579223a2271394159414f50386e41774c6d6d4865335951307852645249396d74707a726b3677692b6a526f77494b453d227d
上面是四条私钥哦需要16进制转字符串
拜托各位了!!!
目前已经有人给了我一份py打的代码大家可以参照
最终我希望给我一个php版或者易语言版也行最好是php版,因为要发布都web加上对py不熟悉,所以py版本我拿到也不知道咋办拜托了

import base64
from binascii import hexlify,unhexlify
import json
import binascii
import ecdsa
import hashlib


def blake(f,size):
    y = hashlib.blake2b(digest_size=size, key=b"", salt=b"", person=b"")  # 键控哈希、加盐、个性化
    y.update(f)
    # print("y = " + y.hexdigest())
    a = list(binascii.unhexlify(y.hexdigest()))
    return a

def generateAddressFromPrivateKey(d):
    f = publicKeyCreate(private_key=unhexlify(d))
    f = list(base64.b64decode(f))
    return f


def publicKeyCreate(private_key):
     sk = ecdsa.SigningKey.from_string(private_key, curve=ecdsa.SECP256k1)
     vk = sk.verifying_key
     public_key = b"04" + binascii.hexlify(vk.to_string())
     # print(base64.b64encode(unhexlify(public_key)))
     return base64.b64encode(unhexlify(public_key))


privateKey = '7b2254797065223a22736563703235366b31222c22507269766174654b6579223a227258586a6f686f514c635150387151394a5655644c6642676b466c36324476572b764b562b5576457874673d227d'
n = json.loads(unhexlify(privateKey.encode()).decode()) # {'Type': 'secp256k1', 'PrivateKey': 'q9AYAOP8nAwLmmHe3YQ0xRdRI9mtpzrk6wi+jRowIKE='}
PrivateKey = n['PrivateKey'].encode() # q9AYAOP8nAwLmmHe3YQ0xRdRI9mtpzrk6wi+jRowIKE=
d = base64.b64decode(PrivateKey)
d = hexlify(d).decode() # abd01800e3fc9c0c0b9a61dedd8434c5175123d9ada73ae4eb08be8d1a3020a1
f = generateAddressFromPrivateKey(d)
f = bytes(f)
h = blake(f,20)
y = [1] + h
a = blake(bytes(y),4)
d = h + a
_d = base64.b32encode(bytes(d)).decode().lower()
r = 'f1' + _d
print(r)
# f1e6oyfzjyprvxgugbdockrzbb2oelhgs46jhci4i=
收藏
1条回答
Au蛋总 2021-6-3

坐等大佬

回复
回答