首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BouncyCastle -验证签名

BouncyCastle -验证签名
EN

Stack Overflow用户
提问于 2020-10-30 21:47:18
回答 1查看 166关注 0票数 0

请求者在Java中使用自己的私钥进行签名。

代码语言:javascript
复制
public static String signHash(PrivateKey privateKey, byte[] hash)
        throws NoSuchAlgorithmException, InvalidKeyException, SignatureException, UnsupportedEncodingException {
    Signature privateSignature = Signature.getInstance("SHA256withRSA");
    privateSignature.initSign(privateKey);
    privateSignature.update(hash);
    byte[] signature = privateSignature.sign();
    return Base64.getEncoder().encodeToString(signature);
}

接收方无法验证其签名。我们在.NET中使用bouncyCastle进行验证。

代码语言:javascript
复制
public bool VerifySignature(AsymmetricKeyParameter pubKey, byte[] signature, byte[] msg)
{
    try
    {
        ISigner signer = SignerUtilities.GetSigner("SHA-256withRSA");
        signer.Init(false, pubKey);
        signer.BlockUpdate(msg, 0, msg.Length);
        return signer.VerifySignature(signature);
    }
    catch (Exception exc)
    {
        Console.WriteLine("Verification failed with the error: " + exc.ToString());
        return false;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-30 21:49:34

代码语言:javascript
复制
public static String signHash(PrivateKey privateKey, byte[] hash)

这不是签名在Java语言中的工作方式,您提供的是消息而不是散列,因此假设数据在Java语言中被散列了两次,并且在使用C#中的Bouncy Castle进行验证时只被散列了一次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64609610

复制
相关文章

相似问题

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