2010-06-01 296 views

回答

2

BouncyCastle FAQ中有一些與RSA實現細節相關的條目。

我個人還沒有發現任何關於Sun和BC提供者不兼容的問題,並且我建議使用Java的本地RSA實現,如果BouncyCastle依賴可以被完全刪除。只有在獲得明確的好處時,才應該添加外部依賴關係。

如果您在項目的其他地方使用BC庫,我想使用哪個提供程序並不重要。

編輯

J2ME不包括RSA實現。因此,如果您打算將應用程序移植到J2ME,BouncyCastle庫現在是正確的選擇。

2

Javadoc of the first constructor

返回KeyPairGenerator對象 產生公鑰/私鑰對用於 指定的算法。

此方法遍歷 已註冊的安全提供程序列表, 以最受歡迎的 提供程序開始。一個新的KeyPairGenerator 對象封裝了 KeyPairGeneratorSpi實現 從第一個提供程序支持 指定的算法返回

請注意,可以通過 Security.getProviders()方法檢索註冊的 服務提供商的列表。

Security.getProviders()反過來連接的Javadoc指出以下:

返回包含所有已安裝的提供的數組。 數組中提供者的順序是他們的偏好順序。

那麼,顯然卑詩省在你的情況「巧合」是第一個首選供應商。如果周圍存在不確定性(即,您想分發應用程序,並且您無法控制最終用戶的環境),並且希望讓它堅持使用BC,那麼您應該更喜歡使用第二個構造函數。

+0

> BC在您的案例中「巧合」第一首選供應商 其實並非如此。剛剛檢查過,即使未提供BC提供程序,第一個構造函數也能正常工作。 Java我有它自己的RSA提供者,我稱之爲'SunRsaSign'。 – hudolejev 2010-06-01 13:54:25

+0

和供應商兼容嗎?我可以使用另一個和我的客戶嗎? – 2010-06-01 14:02:59

+0

@Tom我想最好的辦法是嘗試一下,但我認爲不應該有任何問題。我個人使用BC和OpenSSL實現,並沒有遇到任何問題。 – hudolejev 2010-06-01 14:10:57

0

「BC」返回密碼算法的BouncyCastle實現。

如果不指定提供者,它將返回加密算法的「最優先」實現,即位置1的提供者是提供者數組中最優先的提供者。

+0

並且提供者兼容?我可以使用另一個和我的客戶嗎? – 2010-06-01 14:00:57