2016-12-01 70 views
0

我們正努力創造這應該是字節串一個RSA公鑰,然後我們需要使它DER編碼。DER編碼的RSA公鑰(OCTET STRING)

我們正在嘗試使用下面的代碼來創建一個密鑰對

public static KeyPair getRSAKeyPair() throws InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException { 
    KeyPairGenerator g = KeyPairGenerator.getInstance("RSA", "SC"); 
    g.initialize(2048); 
    return g.generateKeyPair(); 

}

,然後用下面的代碼

PublicKey publicKey1 = keyPair.getPublic(); 
byte[] pubkey = publicKey1.getEncoded(); 

看來公鑰獲得正從它的公鑰在上面的代碼中獲取的是DER編碼的二進制字符串。

查詢:

  1. 如何更改上面的代碼,以便它創建一個八進制字符串。
  2. 我怎樣才能讓它編碼。
+1

除非您有足夠的理由這樣做,否則不要指定提供者。它可能只會讓你的代碼不可移植。 –

回答

2

一個八位組串; 「八位字符串」是「字節數組」的另一個術語。

而且它已經被DER編碼,因爲getEncoded通常返回DER編碼的SubjectPublicKeyInfo。嘗試openssl asn1parse -inform DER -in <file>就可以了。