【发布时间】:2020-10-27 08:47:40
【问题描述】:
我有一个 .pfx 文件和该文件的密码。
我想用 Java 解密一个 RSA 加密文件。 基本上与此处(c#)相同的方法,但在java中: https://stackoverflow.com/a/37894914/13329087
这可能吗?
到目前为止我的方法:
byte[] file = Files.readAllBytes(Paths.get("C:/file.fileinfo"));
String pfxPassword = "pwd";
String keyAlias = "pvktmp:1ce254e5-4620-4abf-9a12-fbbda5b97fa0";
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream("/keystore.pfx"), pfxPassword.toCharArray());
PrivateKey key = (PrivateKey)keystore.getKey(keyAlias, pfxPassword.toCharArray());
Cipher cipher = Cipher.getInstance(key.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, key);
System.out.println(new String(cipher.doFinal(file)));
这会产生错误:
Exception in thread "main" javax.crypto.BadPaddingException: Decryption error
at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:379)
at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:290)
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:365)
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:391)
at javax.crypto.Cipher.doFinal(Cipher.java:2168)
【问题讨论】:
-
简短回答是。只需提供一整套数据(pfx 文件、密码、加密文件和预期的明文)和一些您坚持使用的 Java 代码。
标签: java certificate x509certificate pfx