我想向AndroidKeyStore导入一个密钥。所以,我可以通过openssl以以下方式生成它
openssl rsa-text-in privateKey2048。佩姆
openssl pkcs8-topk8-通知PEM-in/私钥2048。pem-出口-出口私家车2048。德诺克里普特酒店
然后我可以把它从private2048.der转换成十六进制格式,可以在Android应用程序中的byteArray中转换。但我不清楚,如何将此byteArray导入Android KeyStore?
所以在一般情况下,我的问题是如何导入到KeyStore密钥作为字符串或字节数组存在?
ps:我知道可以通过keyPairGenerator生成密钥对。generateKeyPair(),但我想导入我的密钥,例如,由openssl生成,然后在应用程序中硬编码。
将私钥硬编码到应用程序中不是一个好主意。此密钥被泄露,因为APK的内容不是秘密的,因此密钥可以从APK中提取。如果你仍然相信你需要这样做,尽管有这个警告,继续读下去。
要将私钥导入Android密钥库,需要将其表示为私钥实例,然后还需要一个X.509证书(用于私钥对应的公钥)表示为X509证书实例。这是因为JCA密钥库抽象不支持在没有证书的情况下存储私钥。
要将PKCS#8 DER编码的私钥转换为私钥:
PrivateKey privateKey =
KeyFactory.getInstance("RSA").generatePrivate(
new PKCS8EncodedKeySpec(privateKeyPkcs8));
要将PEM或DER编码的证书转换为证书:
Certificate cert =
CertificateFactory.getInstance("X.509").generateCertificate(
new ByteArrayInputStream(pemOrDerEncodedCert));
最后,要将私钥和证书导入Android密钥库的“myKeyAlias”条目:
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
ks.setKeyEntry("myKeyAlias", privateKey, null, new Certificate[] {cert});
查看更多高级示例https://developer.android.com/reference/android/security/keystore/KeyProtection.html.
主要的问题是,我对C相当陌生,OpenSSL留档对我来说不够清晰,我尝试过使用读和写rsa键到C中的pem文件,但我不太明白。例如,函数如何创建私有和公共?而从何而来?pcszPassphrase的意义是什么? 我会解释,好像这是某种伪代码,这就是我想做的,粗体部分是我不知道如何做的: 生成私钥和公钥作为十六进制缓冲区(客户端) 基本上,我知道如何处理AES加密/解密和通信协议,反正他们已经实现了
我知道可以使用此链接为OpenSSL中的自签名证书生成一个公钥和一个私钥。但是对于给定的公钥,我有没有可能算出对应的私钥呢?我一直在使用1024位的RSA公钥。
让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?
我正在Erlang中创建一个应用程序,给定一个RSA私钥,它可以返回RSA公钥和与该priv密钥相关联的x509公钥。 ----只是一个更新---- 在花了一些时间了解x509并阅读了Erlang public_key文档后,我找到了一个解决方案: 如果我可以通过简单地获取模数和publicExponent,从“RSaprivateKey”生成“RSapublicKey”,那么生成这两个键的代码如
我正在尝试使用OpenSSL命令行界面创建基于椭圆曲线的证书。我正在通过在 CLI 中键入以下命令来生成密钥文件: 问题是尽管ECC密钥被成功地生成,但它没有用任何对称密码加密。但是,使用下面的命令加密RSA密钥非常简单: 是否像 RSA 密钥一样加密 ECC 密钥? 我尝试了“OpenSSL 0.9.8zh 2016年1月14日”和“OpenSSL 1.1.0g 2017年11月2日”多参数组合
我使用我编写的程序生成了一个 PKCS#1 RSA 密钥对。我已经输出公钥作为 ASN.1数据结构的DER编码。 然而,当我试图在OpenSSL 和< code>rsautl命令中使用它时,OpenSSL说 我尝试过DER和PEM格式。 是否有额外的编码和/或数据结构需要我申请才能在OpenSSL中使用? 这是我的命令行: PEM 格式的公钥数据结构