![](/img/trans.png)
[英]Convert an RSA PKCS1 private key string to a Java PrivateKey object
[英]How do I convert a private key from hexadecimal to a PrivateKey object?
我為我的私鑰生成了以下關鍵字符串:
""
如何將其轉換回Java中的私鑰對象? 我已經嘗試將此字符串轉換回字節數組,但我對如何繼續這一點毫無頭緒。
這是我將私鑰轉換為十六進制字符串的方式:
public static String getHexString(byte[] b){
String result = "";
for (int i = 0; i < b.length; i++){
result += Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1);
}
return result;
}
然后我在我的私鑰上使用getEncoded()
方法作為此方法的輸入。
當您在RSA私鑰上調用getEncoded()
時,大多數提供程序將返回PKCS#8格式的私鑰。 您的示例就是這種情況。
要反轉該過程,請使用帶有PKCS8EncodedKeySpec
的KeyFactory
,如下所示:
String key = "30820278020...1608"; // omitted for brevity
byte[] keyData = DatatypeConverter.parseHexBinary(key);
KeyFactory factory = KeyFactory.getInstance("RSA");
RSAPrivateKey privateKey = (RSAPrivateKey) factory
.generatePrivate(new PKCS8EncodedKeySpec(keyData));
Signature signature = Signature.getInstance("SHA512withRSA");
signature.initSign(privateKey);
signature.update("Hello, World".getBytes());
System.out.println(DatatypeConverter.printHexBinary(signature.sign()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.