如何在android中从字符串中解密私钥?
我有一个私钥作为字符串。看起来是这样的:如何在android中从字符串中解密私钥?,android,encryption,rsa,Android,Encryption,Rsa,我有一个私钥作为字符串。看起来是这样的: -----BEGIN ENCRYPTED PRIVATE KEY----- MIIE6zAd... cRlpnCaW... VF73XRYo... ... -----END ENCRYPTED PRIVATE KEY----- { "authentications":[ { "type":"clientCertificate", "secret":"abc*****", "pem":"-----BEGIN
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6zAd...
cRlpnCaW...
VF73XRYo...
...
-----END ENCRYPTED PRIVATE KEY-----
{
"authentications":[
{
"type":"clientCertificate",
"secret":"abc*****",
"pem":"-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6zAd...
cRlpnCaW...
VF73XRYo...
...
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIEJTC...
CEGA1UE...
...
-----END CERTIFICATE-----"
}
]
}
如果我想在windows中解密它,我会在cmd中编写以下代码:
openssl rsa -text -in [File]
[File]是一个.pem文件,其中写入了加密的私钥。
然后cmd要求我提供密码短语。
键入密码短语后,我得到另一个.pem文件,其中包含以下内容:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBA...
sy+CJEnLX...
lbp4Uji0F...
...
-----END RSA PRIVATE KEY-----
这个私钥和证书我需要发送数据到服务器
现在,我想将数据从android设备发送到此服务器。
证书、密钥和密码短语作为JSON从服务器的get请求中获取,如下所示:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6zAd...
cRlpnCaW...
VF73XRYo...
...
-----END ENCRYPTED PRIVATE KEY-----
{
"authentications":[
{
"type":"clientCertificate",
"secret":"abc*****",
"pem":"-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6zAd...
cRlpnCaW...
VF73XRYo...
...
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIEJTC...
CEGA1UE...
...
-----END CERTIFICATE-----"
}
]
}
现在我已经创建了证书:
CertificateFactory cf = null;
cf = CertificateFactory.getInstance("X.509");
String obstring = params[0].toString();
String substringcert = obstring.substring(obstring.indexOf("-----BEGIN CERTIFICATE-----"), obstring.indexOf("-----END CERTIFICATE-----") + 25);
String certstring = substringcert.replaceAll("\\\\" + "n", "\n");
InputStream is = new ByteArrayInputStream(certstring.getBytes());
Certificate cert = null;
cert = cf.generateCertificate(is);
我认为这是有效的。
但是现在我想从字符串创建/生成密钥。我已经试过了。但有一个错误:
java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG
所以我在谷歌上搜索并找到了。问题是,android studio不知道DataTypeConverter
,我在没有任何帮助的情况下尝试了它
-----开始加密私钥------
和
-----结束加密私钥------
。什么都没用
如果可能的话,我希望不导入其他库就这样做
最后,我只想在android上做些什么,我可以用cmd做些什么
openssl rsa -text -in [File]
有什么想法吗?需要更多关于我问题的信息吗
谢谢你的帮助。非常感谢你的帮助。我必须修改一些行,但它看起来很有效。我分享我的解决方案,当我确信它最终有效时。