校验ltc的wif

目的:校验ltc的wif是否符合要求,是否符合要求

用到的工具包:pycoin

代码如下:


# -*- coding:utf-8 -*-
'''

@author: user
'''
import hashlib
from pycoin import ecdsa, encoding
from pycoin.networks import bitcoinish
from pycoin.key.Key import Key
import os, sys, logging
import codecs

reload(sys) 
# sys.setdefaultencoding('utf8')

PY_GEN_PATH = "D:/data/priv".replace('/', os.sep)
logger = logging.getLogger('check-ltc')
LOG_FILE = 'check-ltc.log'
RECORD_NUM = 45
LOG_FORMATTER = '%(message)s'
digits58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'


def config_logger():
    logger.setLevel(logging.DEBUG)
    if not os.path.exists(PY_GEN_PATH):
        logger.info("文件夹不存在,已自行创建")
        os.makedirs(PY_GEN_PATH, 777)
    handler = logging.FileHandler(os.path.join(PY_GEN_PATH, LOG_FILE))
    handler.setLevel(logging.DEBUG)
    fmter = logging.Formatter(LOG_FORMATTER)
    handler.setFormatter(fmter)
    logger.addHandler(handler)

    # 控制台打印
    
    console = logging.StreamHandler()
    console.setLevel(level=logging.DEBUG)  # 设置为INFO级别
    console.setFormatter(fmter)
    logger.addHandler(console)


def check_ltc_pk(pre, post):
    print("check ltc pk")
    


def multiplier(factor):

    def multiplyByFactor(number):
        factor_new = factor * 4
        return number * factor_new

    return multiplyByFactor


def double_def():
    a = multiplier(3)
    print(a(4))
    print(a(6))
    
    a = multiplier(2)
    print(a(4))
    print(a(6))
    
    a = multiplier(6)(7)
    print(a)
    '''
            输出:
    48
    72
    32
    48
    168
    '''


def dev_check_ltc_priv():
    from pycoin.networks.registry import network_for_netcode
    from pycoin.encoding import bytes32,b58
    from pycoin.symbols.ltc import network
    
    
    network = network_for_netcode("LTC")

    priv_num=1
    key = network.keys.private(secret_exponent=priv_num) 
    print(key.wif())
    print(key.address())
    print('=' * 50)
    
    key = network.keys.private(secret_exponent=priv_num,is_compressed=False) 
    print(key.wif())
    print(key.address())
    
    #校验wif是否符合要求
    test_='6u823ozcyt2rjPH8Z2ErsSXJB5PPQwK7VVTwwN4mxLBFrao69Xq'
    print(b58.is_hashed_base58_valid(test_))
    test2_='T33ydQRKp4FCW5LCLLUB7deioUMoveiwekdwUwyfRDeGZm76aUjV'
    print(b58.is_hashed_base58_valid(test2_))
    test_='6u823ozcyt2rjPH8Z2ErsSXJB5PPQwK7VVTwwN4mxLBFrao69XQ'
    print(b58.is_hashed_base58_valid(test_))
    
    #key1 = network.keys.private(secret_exponent=priv_num1,is_compressed=False)
    
    
    '''
    BASE58_ALPHABET = b'123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
    BASE58_BASE = len(BASE58_ALPHABET)
    BASE58_LOOKUP = dict((c, i) for i, c in enumerate(BASE58_ALPHABET))
    print(BASE58_LOOKUP)
    
    key = network.keys.private(secret_exponent=0) 
    print(key.wif())
    print(key.sec())
    print(key.address())
    print(key.address(is_compressed=False))
    '''
    
    
if __name__ == '__main__':
    config_logger()
    dev_check_ltc_priv()
    # double_def()

主要就是这段:

test_='6u823ozcyt2rjPH8Z2ErsSXJB5PPQwK7VVTwwN4mxLBFrao69Xq'
    print(b58.is_hashed_base58_valid(test_))

调用pycoin.encoding.b58.py中的is_hashed_base58_valid这个方法,如果是正确的wif,则返回True,否则返回False