Certificate[] certificatechain = null;
PrivateKey signerkey = null;
Certificate certificate = null;
PrivateKey pvtkey = null;
File file = new File("C:\\Users\\21617\\Desktop\\Uttara Pers\\uttararead.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
Enumeration<String> aliasList;
String alias;
String pfxPath = "D:\\Document Signer\\Test-Class3DocumentSigner2014\\Class 3 Docsigntest.pfx", certPassword = "password";
File securityFileKeyPair = new File(pfxPath);
InputStream cerFileStream = new FileInputStream(securityFileKeyPair);
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(cerFileStream, certPassword.toCharArray());
aliasList = keyStore.aliases();
while (aliasList.hasMoreElements()) {
alias = aliasList.nextElement();
KeyStore.ProtectionParameter entryPassword = new KeyStore.PasswordProtection(certPassword.toCharArray());
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, entryPassword);
pvtkey = privateKeyEntry.getPrivateKey();
System.out.println("Private key is:" +pvtkey);
certificate = (X509Certificate) keyStore.getCertificate(alias);
signerkey = (PrivateKey) keyStore.getKey(alias, certPassword.toCharArray());
certificatechain = keyStore.getCertificateChain(alias);
}
我对java加密非常陌生。我正在尝试使用一个包含公钥、私钥和数字证书的.pfx文件对文本文件进行签名。我已经能够通过将.pfx文件加载到java密钥存储中来访问私钥和证书。我想使用.pfx文件中的私钥对数据进行签名,然后随附数字证书。
这就是我想要使用从相应的.pfx文件加载的内容创建数字签名的地方。我希望能够使用从.pfx文件中获得的私钥和证书执行同样的操作。
File file = new File("C:\\Users\\21617\\Desktop\\Uttara Pers\\uttararead.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair pair = keyPairGen.generateKeyPair();
PrivateKey privKey = pair.getPrivate();
Signature sign = Signature.getInstance("SHA256withRSA");
sign.initSign(privKey);
byte[] bytes = "br".getBytes();
sign.update(bytes);
byte[] signature = sign.sign();
String base64encodedString = Base64.getEncoder().encodeToString("signature".getBytes("utf-8"));
System.out.println("Digital signature of the file: "+base64encodedString);
这段代码是我为生成原始签名而编写的。此处的sign对象用于调用和使用此处签名所需的其他内容。我必须为我的问题创建什么对象,它将与此代码中的符号对象等效。
我已经在这一点上呆了很长时间了。请给我指出正确的方向。非常感谢。
暂无答案!
目前还没有任何答案,快来回答吧!