我正在尝试使用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"
答案 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