的BouncyCastle的加密API允許創建和使用的常規java.security
包對象,如java.security.PublicKey
,java.security.PrivateKey
及其容器java.security.KeyPair
驗證數字簽名。閱讀橢圓曲線從私有密鑰文件與BouncyCastle的
假設我使用OpenSSL創建包含我想在我的應用程序中使用的橢圓曲線私鑰的.pem(或者,如果更容易,.der文件)。例如,它看起來像這樣:
-----BEGIN EC PARAMETERS-----
BgUrgQQACg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIDzESrZFmTaOozu2NyiS8LMZGqkHfpSOoI/qA9Lw+d4NoAcGBSuBBAAK
oUQDQgAE7kIqoSQzC/UUXdFdQ9Xvu1Lri7pFfd7xDbQWhSqHaDtj+XY36Z1Cznun
GDxlA0AavdVDuoGXxNQPIed3FxPE3Q==
-----END EC PRIVATE KEY-----
如何使用BouncyCastle的API來獲得java.security.KeyPair
含有該私鑰和對應的公鑰?
請注意我想使用BouncyCastle 1.50中可用的API(在撰寫本文時是最新的),並且不使用已棄用的API。這不幸排除了其他SO答案中使用的PEMReader
類。此外,這個問題是特定於橢圓曲線的格式的;它們在比較RSA或DSA密鑰文件時包含其他參數。
的'EC PARAMETERS'塊在你的_file_我這是'openssl ecparam -genkey'默認工作的一種意外;它不需要或用作實際鍵的一部分,你可以通過指定'-noout'來忽略它,這肯定有點不明顯。 EC(DSA/DH)_does_的實際密鑰結構(base64/DER數據中的「隱藏」)包含一些RSA不參與的信息,但是DSA_does_。 –