Java 如何使用Android的X509公共证书进行加密?
我正在尝试使用.pfx证书文件加密文本文件,使用:Java 如何使用Android的X509公共证书进行加密?,java,android,encryption,x509,Java,Android,Encryption,X509,我正在尝试使用.pfx证书文件加密文本文件,使用: public void EncryptUsingPublicKey(File in, File out, File publicKeyFile) throws IOException, GeneralSecurityException { byte[] encodedKey = new byte[(int)publicKeyFile.length()]; new FileInputStream(publicKeyFile).r
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();
}
我有两个问题:
我认为你的代码行不通。PFX文件在内部是AFAIR PKCS#12文件,可以包含多个证书和密钥。您使用的X509EncodedKeySpec要求在.CER文件(DER/二进制格式)中只有一个证书 因此,您有以下两种选择:
最后,您可以将PFX/CER文件作为资源包含到您的andoid应用程序中:我认为您的代码不起作用。PFX文件在内部是AFAIR PKCS#12文件,可以包含多个证书和密钥。您使用的X509EncodedKeySpec要求在.CER文件(DER/二进制格式)中只有一个证书 因此,您有以下两种选择:
最后,您可以将PFX/CER文件作为资源包含到您的andoid应用程序中:谢谢,我将检查protecle。我使用portecle来专家.CER(我选择导出>头部认证和DER编码)现在得到错误java.lang.IllegalArgumentException:Bad sequence size:3但X509CertificateStructure似乎不存在?我一直在读这篇文章,感谢这篇文章。我将检查protecle。我使用portecle来专家.cer(我选择Export>Head Certificate和DER Encoded),现在得到错误java.lang.IllegalArgumentException:错误序列大小:3,但X509CertificateStructure似乎不存在?我一直在读这个