【发布时间】:2017-02-06 16:48:09
【问题描述】:
如果调用 'getEncoded' 时使用 base64 编码的公钥产生这个
mQENBFh1kBcBCADMUkNW2qFgeRnornjhT3lt73wTGcO9rt+Ktr1tcopmOPTfNq3
feZNFHRUsBt0Nnuj9+vSD2cwFRoZDNulhnBD8lAJYOD427uvV+KBDF/5pCQKh2S
mDK8tJI/ncLIlX4SFa8F9f36FySglpkzA59IFtHdUBz9w+PJRqUQ5MVRzNHYBbv
6aeIWwl46KrL3eibRgBDVuEOKAoesdb+xErs9cqg3KSVi01XBgr+XMSgOBz4J3f
J4HdibsJdz1+113aKT++4LUSuuyeVbw3K/ZgMkrsyeJw84sHhF2kDu61atSUsQE
nJwBF2sPA9V/i28fftxodgg5qbEs8egdsw/wxGzsfABEBAAG0K0NocmlzIFpoZW
5nIChjemhlbmcpIDxjemhlbmdAYXRsYXNzaWFuLmNvbT6JATkEEwEIACMFAlh1k
BcCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRARY82BslwTrMvtB/4t
LoRH91p09vM1sSQ77RC+XwQqhhvN1BAeqGxqZpgCO6Ld5KRh8f4mFY8nXjDCSyy
ydTBzIUp6aG0f+2EBhArtk/oU/pi8D4zHoeBkrl23/234s1kBI5F2g2kd6itwP8
ekimaUyNFdPIN1dPwdxhuspOUtFNR+HsT3BT32v4Afd7sWVNTFrkapxTdxxZkVb
+FS0wbuzFzB2gb8AvEGevzF/hQXOf3r8QzUQoEZ14pigNu/arlXzEuzXJXXT/AQ
nAzbVENoFrhojxqEU7RxH8J4nao8OfpYfL7w3T7PC3nFFSTYSwvYItGkl9DPPiZ
GWZTrb6VfpFGNLHwCoLOaf8ShsAIAAA==
如何将其转换为 X.509?
我需要这样做的原因是创建一个 java.security.PublicKey 对象。我也在这里问过:https://security.stackexchange.com/questions/150422/what-format-is-bouncycastle-opengpg-public-key/150427#150427 并且我已经确认它是一个长度为 2048 的密钥,但通常使用 X.509 标准读取 PublicKeys。如果有另一种阅读方式,那就太好了。
【问题讨论】:
-
我不知道“通常”。 SSL/TLS 和 S/MIME 使用包含公钥的 X.509 证书,这些肯定有很大的用途,但 PGP 和 SSH 都有自己的公钥格式,它们不是 X.509,也被广泛使用。 pedrofb 的回答是正确的,Java crypto out-of-the-box 仅支持 X.509 并且(正如我在安全中确认的那样)这个密钥是 PGP 而不是 X.509。您可能会很高兴知道 SSH 格式的开销要少得多,并且在大小上更接近原始密钥。
标签: bouncycastle