簡體   English   中英

如何將私鑰從十六進制轉換為PrivateKey對象?

[英]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格式的私鑰。 您的示例就是這種情況。

要反轉該過程,請使用帶有PKCS8EncodedKeySpecKeyFactory ,如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM