在OpenSSL生成的Android/Java中加载RSA密钥?

在OpenSSL生成的Android/Java中加载RSA密钥?,java,php,android,openssl,rsa,Java,Php,Android,Openssl,Rsa,我已经用PHP(openssl)生成了一个RSA密钥。它很好用。我使用此PHP脚本创建密钥: $config = array( "digest_alg" => "sha512", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); $keys = openssl_pkey_new($config); $privateKey = openssl_pkey_get_private($k

我已经用PHP(openssl)生成了一个RSA密钥。它很好用。我使用此PHP脚本创建密钥:

$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
 );
$keys = openssl_pkey_new($config);
$privateKey = openssl_pkey_get_private($keys);
$details = openssl_pkey_get_details($privateKey);
$publicKey = $details['key'];
openssl_pkey_export_to_file($privateKey, 'private.pem');
file_put_contents('public.der', $publicKey);
现在我想通过Android/Java加载密钥(public.der和private.pem)。但由于RSA密钥的格式,我不知道如何使用。我认为public.der可以在资产文件夹中(在Android中)

我不会将属于私钥的公钥存储在同一设备上

编辑:public.der文件的内容:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAog/07W7tF/7/tugWy5Fe
cyGMnwbvqYbyPVBJ8/08nZS79sZfROAuxrGz4CJMosCJp9MZdDiwKuLNaQ9Pbayz
mOq6sQ2XpGFDhqrVJJaw3R+oq8dWgtnyZcRs9MvUYVOOltqXV/NVv+X+JECqx8Pz
WiEim6mQtIbcjQ78hZhiC3kZeRIa17YVM/Yagu4tGne/F6gQaMvA+ZSWJIj5mvU1
UOuuCsCsTF5HQbrgWTH7P+ZB3andvPDnih9eNeeplxcVwk1KKdtkn7l1a8t7YYVW
eJtmtfd+sgjeCRDSqh1DNtDTanHOILunGBPZ85bN9dLZ3v5YJeQX4LL5R2jqy3ti
owIDAQAB
-----END PUBLIC KEY-----
问题“”详细回答了如何将DER编码的密钥加载到Java应用程序中的问题


问题“”描述了如何将PEM编码的公钥加载到Java应用程序中。

我已经尝试过了,但在读取公钥时出现了此错误:Java.security.spec.InvalidKeySpecException:Java.lang.RuntimeException:error:0D0680A8:asn1编码例程:asn1\u CHECK\t len:error标记。你能帮助我吗?如果我添加BC作为参数,我也会得到一个错误:java.security.spec.InvalidKeySpecException:java.io.IOException:无法识别Stream中的对象以及
public.der
的内容是什么?我将public.der文件的内容添加到了第一篇文章中。这是PEM格式。查看答案更新。答案很棒。非常感谢。这段代码运行良好:stringtemp=newstring(keyBytes);字符串publicKeyPEM=temp.replace(“----BEGIN PUBLIC-KEY----------\n”,”);publicKeyPEM=privKeyPEM.replace(“----结束公钥----”,”);Base64 b64=新的Base64();字节[]已解码=b64.解码(publicKeyPEM);