首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建ECDSA DER编码签名

创建ECDSA DER编码签名
EN

Stack Overflow用户
提问于 2017-08-08 10:25:02
回答 1查看 1.4K关注 0票数 5

我试图用Java创建一个ECDSA签名。当我在python中创建一个时,它可以在Java中得到很好的验证。但是反之亦然,BadSignatureException.Python正在使用ECDSA库,而Java正在使用SpongyCastle。

签名的Python实现:

代码语言:javascript
复制
private_key = SigningKey.from_der(PRIVATE_KEY.decode('hex'))
private_key.sign(payload, hashfunc=hashlib.sha256, 
sigencode=sigencode_der).encode('hex'),

验证的Python实现

代码语言:javascript
复制
verifying_key = VerifyingKey.from_der(public_key.decode('hex'))
return vk.verify(signature.decode('hex'), payload, hashfunc=hashlib.sha256, sigdecode=sigdecode_der)

签名的Java实现

代码语言:javascript
复制
signature = Signature.getInstance("SHA256withECDSA", "SC");
signature.initSign(this.privateKey);
signature.update(input.getBytes("UTF-8"));
return new String(Hex.encode(signature.sign()));

验证的Java实现

代码语言:javascript
复制
signature = Signature.getInstance("SHA256withECDSA", "SC");
signature.initVerify(publicKey);
signature.update(input.getBytes("UTF-8"));
return signature.verify(Hex.decode(expectedSignature));
EN

回答 1

Stack Overflow用户

发布于 2019-09-13 14:12:27

您可以尝试使用python中的verify_digest()sign_digest()

例如,要验证签名,

代码语言:javascript
复制
digest = SHA256.new() 
digest.update((message.encode('utf-8')))

verified = vk.verify_digest(bytes.fromhex(signature), digest.digest())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45565791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档