Convert list of BTC address(base58) to Ripemd16(base16)

0

Are there online tool or repositories that can convert multiple base58 (BTC address) to base16 simultaneously?

Nael Cruz

Posted 2017-11-22T05:35:58.203

Reputation: 1

Question was closed 2017-11-24T23:45:48.523

what do you need? the address is hash160. are you looking for a tool for converting from base58 to base16 (aka hex)?amaclin 2017-11-22T07:04:28.133

Hello @amaclin sorry about that, I mean base58(BTC address) to ripemd160. I need a tool that can convert multiple address simultaneously.Nael Cruz 2017-11-22T08:00:01.450

I see you do not understand this. Can you provide an example of one pair (A,B) where A is what you have and B is what you want before asking a tool?amaclin 2017-11-22T08:25:46.083

Alright. A is 1CiezJhGh4YqT1gv4NuBJ9pQAXSFkSEXXG I need to find B which is 808a261b6a7b67371958523913a035274fe4c4d0Nael Cruz 2017-11-22T08:30:03.263

Both A and B are hash160 outputs, which is the source of the confusion here. The only difference is the representation of the values. A is encoded as base58 and B as base16 (hex). I suggest you edit the question to reflect this.Daniel R 2017-11-22T10:18:15.343

Answers

1

In Go, you can do this very easily:

package main

import (
    "fmt"

    "github.com/btcsuite/btcutil/base58"
)

var addresses = []string{
    "1Nh7uHdvY6fNwtQtM1G5EZAFPLC33B59rB",
    "1Le1ttNd2GQ79212Epyciw39JDy2E6DYWf",
    "1LpRieyPAZfFyUSMGiZhwAarQoJw1Y8pEx",
}

func main() {
    for _, address := range addresses {
        ripemd160, _, err := base58.CheckDecode(address)
        if err != nil {
            fmt.Printf("Failed to decode address %s: %s\n", address, err)
            continue
        }

        fmt.Printf("HASH160 %x from address %s\n", ripemd160, address)
    }
}

When you have Go installed, you can run this code very easily in your terminal:

$ go get github.com/btcsuite/btcutil/base58
$ go run thefile.go
HASH160 edf10a7fac6b32e24daa5305c723f3de58db1bc8 from address 1Nh7uHdvY6fNwtQtM1G5EZAFPLC33B59rB
HASH160 d76a86f903b33835f06d7b18a1429a8f249f3ab1 from address 1Le1ttNd2GQ79212Epyciw39JDy2E6DYWf
HASH160 d96292e45d045d2269a818b96b13422555557d85 from address 1LpRieyPAZfFyUSMGiZhwAarQoJw1Y8pEx

Steven Roose

Posted 2017-11-22T05:35:58.203

Reputation: 10 855

Hi @Steven can it just accept a txt file consisting the base58? Since I have thousands of base58 to convert. Thank you.Nael Cruz 2017-11-22T10:19:37.637

@NaelCruz this should work: https://gist.github.com/stevenroose/de1cdd183b1d3b9a6e5a5623a4ca969a

Steven Roose 2017-12-05T10:56:14.003

-2

static const QByteArray convert ( const QLatin1String& buf )
{
  QByteArray ret;
  ret.resize ( 20 );
  quint8 addr [30];
  BASE58::decodeBase58 ( buf.latin1 ( ), addr, 26, true );
  memcpy ( ret.data ( ), addr + 1, 20 );
//printf ( "%s\n", ret.toHex ( ).constData ( ) );
  return ret.toHex ( );
}

Oups, sorry. This is not an answer if you are looking for online solution

amaclin

Posted 2017-11-22T05:35:58.203

Reputation: 5 763

Hello @amaclin thanks for your answer. Where can I reach you I have some ideas maybe we can collaborate .Nael Cruz 2017-11-23T07:59:34.870