why bitcoin use ecc-secp256k1 and ripemd160?
测试代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
author: xjump.me#gmail.com
reference:
http://bitcoin.org/bitcoin.pdf‎
http://www.heikkitoivonen.net/m2crypto/api
http://openssl.org
'''
from M2Crypto import EC,EVP
import base64
ec_curve = EC.NID_secp256k1
priv_file = '%s-ecc-priv-key.pem' % (ec_curve)
pub_file = '%s-ecc-pub-key.pem' % (ec_curve)
#generate the ECC keys
ec = EC.gen_params(ec_curve)
ec.gen_key()
ec.save_key(priv_file, None )
ec.save_pub_key(pub_file)
#load the keys from files
ec2=EC.load_key(priv_file)
print "the result of check key is: ",ec2.check_key()
ec_pub = ec2.pub()
#print dir(ec2)
pub_der = ec_pub.get_der()
pub_pem = base64.b64encode(pub_der)
print 'PEM public key is: \n',pub_pem
md = EVP.MessageDigest("ripemd160")
md.update('why bitcoin use ecc-secp256k1 and ripemd160?')
hash = md.digest()
r,s = ec2.sign_dsa(hash)
print "ecdsa signature is: r=",base64.b64encode(r),",s=",base64.b64encode(s)
print "ecdsa signature verify result is:",ec2.verify_dsa(hash, r, s)
print "END"