10

I realize that this question may be borderline bannable because it's asking for suggestions on tools, but it will really help newbies. This online tool allowed me to play around with hashes and to really understand them at a deeper level: http://www.fileformat.info/tool/hash.htm

I can't find a similar tool (that works) for ECDSA cryptography where I can play around with public and private keys, and do digital signatures on messages, and test signature verification.

I've found these 2 sites that claim to do this but didn't work for me:

  1. http://dbis.rwth-aachen.de/~renzel/mobsos/lib/js/jsrsasign/sample-ecdsa.html

  2. http://extranet.cryptomathic.com/ecc/index

Thoughts? Suggestions?


UPDATE: Great suggestions below. Some tools I found:

for hashing: http://www.fileformat.info/tool/hash.htm

generating public private key pairs and decrypting ciphers: https://8gwifi.org/rsafunctions.jsp

Generating EC public private key pairs and signing Verifying the Message https://8gwifi.org/ecsignverify.jsp

generating public private key pairs and testing signing: https://kjur.github.io/jsrsasign/sample/sample-ecdsa.html

2

3 Answers 3

5

Here are a few I'd recommend:

Or play with pybitcointools at the command line (not online):

$ git clone https://github.com/vbuterin/pybitcointools.git
$ cd pybitcointools
$ python
>>> from bitcoin import *
>>> sk = random_key()  # Generate a private key
>>> vk = privtopub(sk) # Generate a public key
>>> msg = 'hello world' # Create a simple message
>>> sig = ecdsa_sign(msg, sk) # Sign the message using your private key
>>> print sig
GxXGAt...2L/eJk=
>>> print ecdsa_verify(msg, sig, vk) # Use sig and public key to verify
True
>>> msg = 'hello mars' # Change the message
>>> print ecdsa_verify(msg, sig, vk) # Changing the msg invalidates sig
False

http://showterm.io/203b168061b0156c4d1dd

HD Wallet stuff:

If you're looking to learn more about ECDSA suggest checking out: https://jeremykun.com/2014/02/08/introducing-elliptic-curves/

4
  • Question: In the first link (bitcore.io), they provide a private-public key pair, and an 'Address'. I presume the 'Address' is the SHA-256 hash of the public key. But when I try to hash the public key on this site (fileformat.info/tool/hash.htm) I don't get the same SHA-256 hash. Could you help me understand what the 'Address' is in that case? Commented May 22, 2017 at 5:28
  • 1
    Address creation is a bit more complicated. It's really a series of steps as shown here: gobittest.appspot.com/Address. Though there are two types (compressed vs. uncompressed) and I believe you will get different addresses if you use the gobittest vs. bitcore. Commented May 24, 2017 at 2:10
  • 1
    Using this private key: 2b1f14de0bc7b8d71a6409749e9e88d6e227c6516943713ed08448343722ae85 Bitcore generates: 1JmAEL8KbzVXFc15KUb9YXjgTop321WiC6 Gobittest generates: 1JsnjS7t8JW5CDi1UMwp6BSG2rJ3Xm94BF For more see: github.com/bitcoin-bootcamp/bitcoin-exercises/tree/master/… $ python address.py --secret '2b1...e85' Bitcoin Address (Compressed): 1JmAEL8KbzVXFc15KUb9YXjgTop321WiC6 $ python address.py --secret '2b1...e85' --u Bitcoin Address (Uncompressed): 1JsnjS7t8JW5CDi1UMwp6BSG2rJ3Xm94BF Commented May 24, 2017 at 2:18
  • Interesting - good to know. I thought a bitcoin address was simply the hash of a public key. Turns out it's more complicated. Commented May 24, 2017 at 12:17
3

closest I can come up with are these:

http://coinig.com/

http://gobittest.appspot.com/Address

https://www.bitaddress.org/bitaddress.org-v3.2.0-SHA256-ad4fd171c647772aa76d0ce828731b01ca586596275d43a94008766b758e8736.html

https://coinb.in/

not exactly ECDSA, but served me alot for Bitcoin undertsanding/testing.

Security hint: you would never provide/use a private key to/from such a public website, unless you are really sure of what you are doing. Be extremly careful.

2
  • The first link lets me verify a public key + message + signature combination. Do you know of some online site that will generate a signature given a private key and a message (just for playing around purposes of course -- your fair warning is very apt). Commented May 16, 2017 at 1:05
  • 1
    no, I don't know a webpage that provides this ... when I was playing with signatures, I used the command line: bitcoin.stackexchange.com/questions/46455/… Commented May 16, 2017 at 9:44
2

Here is an ECC calculator for the Secp256k1 curve that I'm programming in Java. https://github.com/MrMaxweII/Secp256k1-Calculator

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.