使用SHA256withRSA签名后如何验证signatureBytes?

莫妮卡·蒂瓦里(Monika Tiwari)

我正在使用“ Windows-MY” KeyStore签署一些文本。我想使用我的私钥签名并使用公钥进行验证。

KeyStore keyStore = KeyStore.getInstance("Windows-MY");
                keyStore.load(null, null); 
Enumeration en = keyStore.aliases();
while (en.hasMoreElements()) {   
    KeyStore keyStore = KeyStore.getInstance("Windows-MY");
                keyStore.load(null, null);
    String alias = en.nextElement().toString();
    X509Certificate c = (X509Certificate) keyStore.getCertificate(alias);
    String serialNumber = c.getSerialNumber().toString();
    System.out.println("--" + aliasName);
                PrivateKey privateKey = (PrivateKey) keyStore.getKey(aliasName, null);
                PublicKey publicKey = (PublicKey) c.getPublicKey();
                Certificate[] chain = keyStore.getCertificateChain(aliasName);
    DataOutputStream fout = new DataOutputStream(outstream);
    // -------------------------------------------------------
    String data = "Monika";
    byte[] content = data.getBytes();
    Provider p = keyStore.getProvider();
    // ----------------------signature---start---------------------------

    Signature signature = Signature.getInstance("SHA256withRSA", p);
    System.out.println(" signature.getProvider():"+ signature.getProvider());
    signature.initSign(privateKey);
    signature.update(content);
    byte[] signatureBytes = signature.sign();
    System.out.println("signatureBytes-------------"+ signatureBytes.toString());
    // ----------------------signature----------end------------------

    // ------------------------verification---------------
    Signature signature1 = Signature.getInstance("SHA256withRSA", p);
    System.out.println(" signature1.getProvider():"+ signature1.getProvider());
    signature1.initVerify(publicKey);
    signature1.update(content);
    boolean verifies = signature1.verify(signatureBytes);
    System.out.println("signature verifies: " + verifies);
    // ------------------------------------------------
    fout.close();
} // while

输出:

privateKey:RSAPrivateKey [size=2048 bits, type=Exchange, container=AC0BEBA9-A361-4611-96D9-B365B671FBC3]
 signature.getProvider():SunMSCAPI version 1.6
signatureBytes-------------[B@1402d5a
 signature1.getProvider():SunRsaSign version 1.5
signature verifies: false

注意:

  1. 我的私钥已经是RSAPrivateKey。
  2. 签名提供者是SunMSCAPI。
  3. 但是我不知道带有私钥的验证提供者。
莫妮卡·蒂瓦里(Monika Tiwari)
Signature signature = Signature.getInstance("SHA256withRSA",p);
                        System.out.println(" signature.getProvider():"+ signature.getProvider());
                        signature.initSign(privateKey, new SecureRandom());
                        signature.update(byteData);
                        byte[] signatureBytes = signature.sign();




//                      X509Certificate cert1 =signatureBytes. 
                        System.out.println("signatureBytes-------------"+ signatureBytes.toString());
                        // ----------------------signature----------end------------------

                        // ------------------------verification---------------
                        Signature signature1 = Signature.getInstance("SHA256withRSA");
                        System.out.println(" signature1.getProvider():"+ signature1.getProvider());
                        signature1.initVerify(publicKey);
                        signature1.update(byteData);

                        boolean verifies = signature1.verify(signatureBytes);
                        System.out.println("signature verifies: " + verifies);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SHA256withRSA签名后如何验证signatureBytes?

来自分类Dev

如何在PHP上将hash_hmac()与“ SHA256withRSA”一起使用?

来自分类Dev

SHA256withRSA的作用和顺序是什么?

来自分类Dev

在Delphi中使用OpenSSL验证SHA256签名失败

来自分类Dev

如何测试byte []是否为SHA512withRSA签名?

来自分类Dev

如何使用SHA256在Linux中签名EXE?

来自分类Dev

如何使用RSA SHA-256哈希对JWT进行签名

来自分类Dev

如何使用RSA SHA-256哈希对JWT进行签名

来自分类Dev

使用SHA256的SignedXml计算签名

来自分类Dev

使用SHA-2使用交叉签名的证书使用signtool签名和验证后,Windows驱动程序安装失败

来自分类Dev

使用gpg验证签名后如何比较主键指纹?

来自分类Dev

如何使用.NET 4.0的Sha256 Cert对ClickOnce进行签名,例如Visual Studio Update 3

来自分类Dev

如何使用私钥用rsa-sha256签名字符串?

来自分类Dev

如何使用 PKCS 7 和 SHA 算法在 C# 中创建数字签名并验证它

来自分类Dev

HMAC 和 SHA256 - 如何使用随机数进行验证

来自分类Dev

SignTool不使用SHA256签名ClickOnce应用,仅使用SHA1

来自分类Dev

Java SHA1withRSA 验证总是错误的,为什么?

来自分类Dev

使用 SHA-256 进行密码匹配验证

来自分类Dev

SHA256的C#签名说明

来自分类Dev

如何在锈中使用sha256对sha256的输出进行哈希处理

来自分类Dev

.NET中使用ECDsa和SHA256对XML进行签名

来自分类Dev

在.NET Framework 4.0中使用SHA256签名XML算法

来自分类Dev

在Windows 7上的Office 2010中使用SHA256对VBA宏进行签名

来自分类Dev

Saml2SecurityTokenHandler 是否支持使用 SHA256 签名的 SAML2 断言?

来自分类Dev

是否可以在 PDF 1.4 中使用带有 SHA256 的 ECDSA 签名?

来自分类Dev

SHA256签名与RSA-SHA256签名之间的区别

来自分类Dev

使用secp256r1曲线和SHA256算法生成ECDSA签名-BouncyCastle

来自分类Dev

使用secp256r1曲线和SHA256算法生成ECDSA签名-BouncyCastle

来自分类Dev

SunJCE SHA1WithRSA使用什么填充策略

Related 相关文章

  1. 1

    使用SHA256withRSA签名后如何验证signatureBytes?

  2. 2

    如何在PHP上将hash_hmac()与“ SHA256withRSA”一起使用?

  3. 3

    SHA256withRSA的作用和顺序是什么?

  4. 4

    在Delphi中使用OpenSSL验证SHA256签名失败

  5. 5

    如何测试byte []是否为SHA512withRSA签名?

  6. 6

    如何使用SHA256在Linux中签名EXE?

  7. 7

    如何使用RSA SHA-256哈希对JWT进行签名

  8. 8

    如何使用RSA SHA-256哈希对JWT进行签名

  9. 9

    使用SHA256的SignedXml计算签名

  10. 10

    使用SHA-2使用交叉签名的证书使用signtool签名和验证后,Windows驱动程序安装失败

  11. 11

    使用gpg验证签名后如何比较主键指纹?

  12. 12

    如何使用.NET 4.0的Sha256 Cert对ClickOnce进行签名,例如Visual Studio Update 3

  13. 13

    如何使用私钥用rsa-sha256签名字符串?

  14. 14

    如何使用 PKCS 7 和 SHA 算法在 C# 中创建数字签名并验证它

  15. 15

    HMAC 和 SHA256 - 如何使用随机数进行验证

  16. 16

    SignTool不使用SHA256签名ClickOnce应用,仅使用SHA1

  17. 17

    Java SHA1withRSA 验证总是错误的,为什么?

  18. 18

    使用 SHA-256 进行密码匹配验证

  19. 19

    SHA256的C#签名说明

  20. 20

    如何在锈中使用sha256对sha256的输出进行哈希处理

  21. 21

    .NET中使用ECDsa和SHA256对XML进行签名

  22. 22

    在.NET Framework 4.0中使用SHA256签名XML算法

  23. 23

    在Windows 7上的Office 2010中使用SHA256对VBA宏进行签名

  24. 24

    Saml2SecurityTokenHandler 是否支持使用 SHA256 签名的 SAML2 断言?

  25. 25

    是否可以在 PDF 1.4 中使用带有 SHA256 的 ECDSA 签名?

  26. 26

    SHA256签名与RSA-SHA256签名之间的区别

  27. 27

    使用secp256r1曲线和SHA256算法生成ECDSA签名-BouncyCastle

  28. 28

    使用secp256r1曲线和SHA256算法生成ECDSA签名-BouncyCastle

  29. 29

    SunJCE SHA1WithRSA使用什么填充策略

热门标签

归档