gpt4 book ai didi

java - 创建 ECDSA DER 编码签名

转载 作者:太空狗 更新时间:2023-10-30 01:36:45 25 4
gpt4 key购买 nike

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

签名的 Python 实现:

private_key = SigningKey.from_der(PRIVATE_KEY.decode('hex'))
private_key.sign(payload, hashfunc=hashlib.sha256,
sigencode=sigencode_der).encode('hex'),

验证的Python实现

verifying_key = VerifyingKey.from_der(public_key.decode('hex'))
return vk.verify(signature.decode('hex'), payload, hashfunc=hashlib.sha256, sigdecode=sigdecode_der)

签名的 Java 实现

signature = Signature.getInstance("SHA256withECDSA", "SC");
signature.initSign(this.privateKey);
signature.update(input.getBytes("UTF-8"));
return new String(Hex.encode(signature.sign()));

验证的Java实现

signature = Signature.getInstance("SHA256withECDSA", "SC");
signature.initVerify(publicKey);
signature.update(input.getBytes("UTF-8"));
return signature.verify(Hex.decode(expectedSignature));

最佳答案

您可以尝试使用 python 中的 verify_digest()sign_digest()
例如验证签名,

digest = SHA256.new() 
digest.update((message.encode('utf-8')))

verified = vk.verify_digest(bytes.fromhex(signature), digest.digest())

关于java - 创建 ECDSA DER 编码签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com