KeyStore.builder - .crt文件的类型参数

时间:2016-07-20 09:19:29

标签: java encryption digital-signature digital-certificate

我正在编写将为给定文件应用数字签名的代码。我有.crt文件,我需要使用该文件构建KeyStore实例。我想使用的方法如下:

 Builder newInstance(String **type**, Provider provider,
                File file, ProtectionParameter protection) 

但是我不确定 'type' 应该指定我是否使用.crt文件, 可能会发生我不明白的事情,因为这是我第一次处理数字签名时,在这种情况下不要判断我: - )

谢谢,欢呼

1 个答案:

答案 0 :(得分:1)

您可以首先使用私钥(.pem)和证书(.crt)构建JKS(java密钥库文件并使用它)

检查此答案Importing the private-key/public-certificate pair in the Java KeyStore

然后您可以使用此密钥库进行签名,这里是如何加载新的create java密钥库文件

KeyStore keystore  = KeyStore.getInstance(TYPE_OF_KEYSTORE);
keystore.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD);

这是一个数字签名和验证的例子

                           PrivateKey oPrivateKey = (PrivateKey) keystore.getKey(sAlias,null);


                           Provider p = keystore.getProvider();
                           // data to signed
                           byte[] data ="this is the just for test".getBytes();
                           // Signing the data
                           Signature sig = Signature.getInstance("SHA1withRSA");
                           sig.initSign(oPrivateKey);

                           sig.update(data);
                           byte[] signature = sig.sign(); // the digital signature

                           Signature verifier = Signature.getInstance("SHA1withRSA", p);
                           verifier.initVerify(oPublicCertificate);
                           verifier.update(data);
                           System.out.println("the verification result "+verifier.verify(signature));

http://muhammadhamed.blogspot.com/2010/04/accessing-ms-certificate-stores-in-java.html

我希望这可以提供帮助!