Title: I need a source code of WIF checksum checking Post by: tywors on September 17, 2014, 04:38:40 PM Hello! I have one problem with this exemple:
http://s23.postimg.org/4qcts48ez/Captura4.png I try duplicate this form to my hosting but i can't. I try convertirn to Base58 but my result is different. ??? Any have the source code of this form? In Java/PHP/etc.. Thanks! ;) Title: Re: I need a source code of WIF checksum checking Post by: davec on September 17, 2014, 06:59:53 PM It's not for the form, but this is code to encode and decode a WIF written in Go and is used by the btcd suite and fully tested.
https://github.com/conformal/btcutil/blob/master/wif.go In particular, look at the DecodeWIF function: DecodeWIF -- https://github.com/conformal/btcutil/blob/master/wif.go#L84-L121 Title: Re: I need a source code of WIF checksum checking Post by: tywors on September 17, 2014, 07:22:33 PM It's not for the form, but this is code to encode and decode a WIF written in Go and is used by the btcd suite and fully tested. https://github.com/conformal/btcutil/blob/master/wif.go In particular, look at the DecodeWIF function: DecodeWIF -- https://github.com/conformal/btcutil/blob/master/wif.go#L84-L121 Thanks!! ;D Title: Re: I need a source code of WIF checksum checking Post by: davec on September 17, 2014, 07:25:05 PM Also, here is some Go code to do exactly what's in the screenshot using the btcd suite packages:
package main import ( "fmt" "github.com/conformal/btcutil" "github.com/conformal/btcwire" ) func main() { step1 := "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ" fmt.Printf("1 - Wallet import format: %s\n", step1) step2 := btcutil.Base58Decode(step1) fmt.Printf("2 - Converting WIF as Base58 string to byte array: %x\n", step2) step3 := step2[:len(step2)-4] fmt.Printf("3 - Dropping last 4 checksum bytes from 2: %x\n", step3) step5 := btcwire.DoubleSha256(step3) fmt.Printf("4/5 - Double SHA-256 hash of 3: %x\n", step5) fmt.Printf("6 - First 4 bytes of 5, this is the calculated checksum: %x\n", step5[:4]) step7 := step2[len(step2)-4:] fmt.Printf("7 - Take the last 4 bytes of 2, this is the original checksum: %x\n", step7) } And the result of running that program: 1 - Wallet import format: 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ 2 - Converting WIF as Base58 string to byte array: 800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d 3 - Dropping last 4 checksum bytes from 2: 800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d 4/5 - Double SHA-256 hash of 3: 507a5b8dfed0fc6fe8801743720cedec06aa5c6fca72b07c49964492fb98a714 6 - First 4 bytes of 5, this is the calculated checksum: 507a5b8d 7 - Take the last 4 bytes of 2, this is the original checksum: 507a5b8d Title: Re: I need a source code of WIF checksum checking Post by: tywors on September 18, 2014, 10:46:09 AM Also, here is some Go code to do exactly what's in the screenshot using the btcd suite packages: package main import ( "fmt" "github.com/conformal/btcutil" "github.com/conformal/btcwire" ) func main() { step1 := "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ" fmt.Printf("1 - Wallet import format: %s\n", step1) step2 := btcutil.Base58Decode(step1) fmt.Printf("2 - Converting WIF as Base58 string to byte array: %x\n", step2) step3 := step2[:len(step2)-4] fmt.Printf("3 - Dropping last 4 checksum bytes from 2: %x\n", step3) step5 := btcwire.DoubleSha256(step3) fmt.Printf("4/5 - Double SHA-256 hash of 3: %x\n", step5) fmt.Printf("6 - First 4 bytes of 5, this is the calculated checksum: %x\n", step5[:4]) step7 := step2[len(step2)-4:] fmt.Printf("7 - Take the last 4 bytes of 2, this is the original checksum: %x\n", step7) } And the result of running that program: 1 - Wallet import format: 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ 2 - Converting WIF as Base58 string to byte array: 800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d 3 - Dropping last 4 checksum bytes from 2: 800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d 4/5 - Double SHA-256 hash of 3: 507a5b8dfed0fc6fe8801743720cedec06aa5c6fca72b07c49964492fb98a714 6 - First 4 bytes of 5, this is the calculated checksum: 507a5b8d 7 - Take the last 4 bytes of 2, this is the original checksum: 507a5b8d Perfect!! i never dev in GO. One question i need strings.EqualFold("Go", "go") but i need to differentiate between uppercase and lowercase. Thanks! Title: Re: I need a source code of WIF checksum checking Post by: davec on September 19, 2014, 10:59:01 PM The == and != operators work with strings in a case sensitive fashion in Go.
fmt.Println("Go" == "Go") fmt.Println("Go" == "go") Result: true false |