Python生成ecc秘钥,与签名验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import ecdsa
import hashlib
from ecdsa.util import sigencode_der,sigdecode_der
ecc_pri = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p)
sign_dat = ecc_pri.sign(b'123456', entropy=None, hashfunc=hashlib.sha256, sigencode=sigencode_der)
print(sign_dat)
ecc_pub = ecc_pri.get_verifying_key()
result = ecc_pub.verify(sign_dat, b'123456', hashfunc=hashlib.sha256, sigdecode=sigdecode_der)
print(result)

with open('ecc_pri.pem', 'wb') as f2:
f2.write(ecc_pri.to_pem())
with open('ecc_sig.data', 'wb') as f1:
f1.write(sign_dat)
with open('ecc_pub.pem', 'wb') as f2:
f2.write(ecc_pub.to_pem())

Python导入外部ECC秘钥进行签名

1
2
3
4
5
6
7
8
9
10
11
12
13
import  ecdsa
import hashlib
from ecdsa.util import sigencode_der,sigdecode_der
with open('ecc_prikey.key', 'rb') as f1:
pem_pri=f1.read()
with open('ecc_pub.key', 'rb') as f2:
pem_pub=f2.read()
pri_ecc = ecdsa.SigningKey.from_pem(pem_pri)
print(pri_ecc) #私钥对象
pub_ecc = ecdsa.VerifyingKey.from_pem(pem_pub) #公钥对象
ecc_dat = pri_ecc.sign(b'123456', entropy=None, hashfunc=hashlib.sha256,sigencode=sigencode_der)
result = pub_ecc.verify(ecc_dat,b'123456',hashfunc=hashlib.sha256,sigdecode=sigdecode_der)
print(result)