小编ahm*_*ala的帖子

创建ECDSA DER编码签名

我正在尝试用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'),
Run Code Online (Sandbox Code Playgroud)

验证的Python实现

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

Java签名实现

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

验证的Java实现

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

python java encoding sign ecdsa

5
推荐指数
1
解决办法
539
查看次数

标签 统计

ecdsa ×1

encoding ×1

java ×1

python ×1

sign ×1