使用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

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

来自分类Dev

SHA256withRSA的作用和顺序是什么?

来自分类Dev

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

来自分类Dev

SHA256的C#签名说明

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用SHA256的SignedXml计算签名

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

SunJCE SHA1WithRSA使用什么填充策略

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

    SHA256withRSA的作用和顺序是什么?

  3. 3

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

  4. 4

    SHA256的C#签名说明

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    使用SHA256的SignedXml计算签名

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

    SunJCE SHA1WithRSA使用什么填充策略

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档