Java:如何从字符串生成PrivateKey?

时间:2015-12-24 14:53:02

标签: android security rsa private-key

我正在尝试使用SH1 RSA对邮件进行编码,但除了RSA的一些基本信息之外,我没有安全主题的经验。我被赋予了String私钥。我已经设法写下面的代码块来完成这项工作,但我不确定我是否正确地安全地完成了这项工作。

我不是专家,但在代码中将我的私钥作为String放置是不安全的。谁能指导我?

String privateKeyString = "mykeyhere...";
byte[] privateKeyBytes = privateKeyString.getBytes();
String encodedPrivateKey = Base64.encodeToString(privateKeyBytes, Base64.URL_SAFE);

KeyFactory factory = KeyFactory.getInstance(RSA);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encodedPrivateKey.getBytes());
RSAPrivateKey privateKey = (RSAPrivateKey) factory.generatePrivate(keySpec);

Signature instance = Signature.getInstance(ALGORITHM);
instance.initSign(privateKey);
instance.update(content.getBytes());
return new String(instance.sign());

我的私钥格式为:

"-----BEGIN PRIVATE KEY-----\n"+
"MIIE...\n"+
"cH0iRj...\n"+
"O0Hhj...\n"+
.
.
.
"fG6...\n"+
"B6/hF...\n"+
"3Mq38...\n"+
"-----END PRIVATE KEY-----\n"

1 个答案:

答案 0 :(得分:18)

您的密钥格式是未加密的base64编码的PKCS8编码私钥。以下是如何将其解码为私钥的示例。 (在这个例子中,不要担心私钥的安全性,这只是一个例子)。

Prime numbers are:
2   3   5   7   11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71
73  79  83  89  97  101 103 107 109 113 127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199