【问题标题】:Print () result is not output, can't find errorprint() 结果不输出,找不到错误
【发布时间】:2020-09-13 16:48:37
【问题描述】:

这个脚本生成了一个哈希,但是它没有正确地在函数中写入一些东西。

from bitcoin import *
import os
import hashlib
import base58
 

while True:
    priv =  random_key()
    pubkey = privtopub(priv)
    compress_pubkey = False
    
 
    if (compress_pubkey):
        if (ord(pubkey[-2:].decode('hex')) % 2 == 0):
            pubkey_compressed = '02'
        else:
            pubkey_compressed = '03'
        pubkey_compressed += pubkey[2:66]
        hex_str = bytearray.fromhex(pubkey_compressed)
    else:
        hex_str = bytearray.fromhex(pubkey)
 
key_hash = hash160(hex_str)

def hash160(hex_str):
    sha = hashlib.sha256()
    rip = hashlib.new('ripemd160')
    sha.update(hex_str)
    rip.update( sha.digest() )
    print ( "key_hash = \t" + rip.hexdigest() )
    return rip.hexdigest()  # .hexdigest() is hex ASCII

我检查了脚本是否正常工作。做了print (pubkey)。结果显示了公钥,但我不需要获取 key_hash。不幸的是,当我这样做时print ("key_hash = \ t" + rip.hexdigest ())

结果不执行!我不懂编程。帮助修复代码!

【问题讨论】:

  • 好吧,你在定义它之前调用hash160
  • 请注意,您正在调用hash160() 您实际定义该函数之前。这段代码实际上可以无错误运行的唯一方法是,如果您的其中一个导入(必须是bitcoin)引入了它自己的同名函数;那个版本的hash160() 显然不包含print 语句。
  • @Carcigenicate 需要做什么才能显示结果?
  • @jasonharper 我需要如何以及在 hash160 () 中进行哪些更改?

标签: python python-3.x random hashlib


【解决方案1】:

代码重排后:

from bitcoin import *
import os
import hashlib
import base58

def hash160(hex_str):
    sha = hashlib.sha256()
    rip = hashlib.new('ripemd160')
    sha.update(hex_str)
    rip.update(sha.digest())
    print("key_hash = \t" + rip.hexdigest())
    return rip.hexdigest()  # .hexdigest() is hex ASCII

while True:
    priv = random_key()
    pubkey = privtopub(priv)
    compress_pubkey = False

    if (compress_pubkey):
        if (ord(pubkey[-2:].decode('hex')) % 2 == 0):
            pubkey_compressed = '02'
        else:
            pubkey_compressed = '03'
        pubkey_compressed += pubkey[2:66]
        hex_str = bytearray.fromhex(pubkey_compressed)
    else:
        hex_str = bytearray.fromhex(pubkey)

    key_hash = hash160(hex_str)

输出:

key_hash =  b0ac6f690633331af487f594dd3c42c6c67ce085
key_hash =  de735b3046545f63c8cb2f7d44b7f24a8b769ad7
key_hash =  49b0ae2b541832797680b977ca9e374d1a621787
key_hash =  ea3e1d9762331e791412e96b2a67f418cfd6ca2c
key_hash =  e5ff3affd4ba7eb2bb343548f587bde9dbdace6b
key_hash =  b1a952405516abe494e7e32610a3eaf85d7914f2
key_hash =  a0050e1f18b2d0738c458e237a447bd8f2810fec
key_hash =  23eeca93355ba511bdf28c475b5e62d2da64546b
key_hash =  cc5904bae39ee51b75097c95ad0307a21ecef1bc
... And So On

请注意,存在无限循环 (while True),请考虑替换为特定数量的迭代。

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多