我正在尝试使用以下内容使用.pfx证书文件加密文本文件:
public void EncryptUsingPublicKey(File in, File out, File publicKeyFile) throws IOException, GeneralSecurityException {
byte[] encodedKey = new byte[(int)publicKeyFile.length()];
new FileInputStream(publicKeyFile).read(encodedKey);
// create public key
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey pk = kf.generatePublic(publicKeySpec);
FileInputStream is = new FileInputStream(in);
Cipher pkCipher = Cipher.getInstance("RSA");
pkCipher.init(Cipher.ENCRYPT_MODE, pk);
CipherOutputStream os = new CipherOutputStream(new FileOutputStream(out), pkCipher);
copy(is, os);
os.close();
}
我有两个问题:
答案 0 :(得分:0)
我认为你的代码不会起作用。 PFX文件是内部AFAIR PKCS#12文件,可以包含多个证书和密钥。您正在使用的X509EncodedKeySpec要求只有一个.CER文件(DER /二进制格式)的证书。
因此,您有以下两个选项:
最后,您可以将PFX / CER文件作为资源包含在您的andoid应用中:Load file from resource