我有一個PublicKey
(java.security.PublicKey
)。 我需要將它轉換成HEX字符串。X509公鑰HEX
就像您打開證書(例如在Windows上)並查看公鑰信息一樣。你會看到:
04 40 ad 77 10 45 08 f2 3a ae 1d 1d 95 22 2f b3 f5 e5 2f da db 8c 39 3a 03 15 fb 4b 36 28 46 de 7b 00 f4 73 11 ae b9 ac 00 aa 19 34 6d fb 7c 56 b1 93 c0 1b 86 7c d0 a2 0b 4d 22 a9 d2 4d b0 f6 34 c4
(*)
任何想法如何做到這一點?
編輯:
我想:
Hex.encodeHexString(cert.getPublicKey.getEncoded)
它返回我的字符串:
3063301c06062a8503020213301206072a85030202230106072a850302021e01034300_0440ad77104508f23aae1d1d95222fb3f5e52fdadb8c393a0315fb4b362846de7b00f47311aeb9ac00aa19346dfb7c56b193c01b867cd0a20b4d22a9d24db0f634c4
此字符串包含十六進制值(*)(我把_它開始的地方)。
那麼你有沒有嘗試*任何*尚未? 'PublicKey'有一個'getEncoded()'方法來返回字節,然後你只需要一個字節數組到十六進制轉換 - 這在Stack Overflow上有很多例子。 –
@JonSkeet是的,我試過了。 'getEncoded'返回主編碼格式的密鑰。在我的情況下,它是X.509。那麼,如何解碼呢? –
是什麼讓你覺得你需要解碼它?如果將'getEncoded()'返回的字節轉換爲十六進制,那麼與問題中顯示的十六進制進行比較的方式如何? –