詢問方法KeyPairGenerator.initialize()
需要一個SecureRandom
實例,它初始化很昂貴。 Java Doc沒有提到它是線程安全的。我所能找到的是a comment in the source code。難道這取決於實際創建的KeyPairGenerator
實例嗎?順便說一下,我正在使用Sun RSA實例。KeyPairGenerator.generateKeyPair()線程安全嗎?
3
A
回答
1
它確實取決於創建的實際實例,軸突,正如你猜測的那樣。注意KeyPairGenerator類是抽象的,實現子類覆蓋generateKeyPair方法是很重要的。因此,抽象類KeyPairGenerator的作者無法聲稱它是線程安全的。他們所能做的只是確保他們沒有采取任何行動來妥協線程安全。
使用靜態getInstance方法獲取KeyPairGenerator的標準方法將返回派生自KeyPairGenerator的類的實例:請參閱KeyPairGenerator.Delegate類。它的generateKeyPair的實現也沒有損害線程安全性,所以如果你以這種方式得到你的KeyPairGenerator,那你很好†。但你也可以得到這樣的KeyPairGenerator的:
KeyPairGenerator kpg=new KeyPairGenerator("RSA"){
@Override
public KeyPair generateKeyPair(){
return doSomethingThatIsntThreadSafe();
}
};
現在當然,你永遠不會做,但KeyPairGenerator的的作者可以不知道,所以他們也不會告訴你的KeyPairGenerator的任何實例是線程安全的。
†其中罰款意味着取決於您的加密SPI做正確的事情!
相關問題
- 1. java線程安全:線程安全嗎?
- 2. Spring mongoTemplate線程安全嗎?
- 3. Lparallel.queue線程安全嗎?
- 4. BoxClient線程安全嗎?
- 5. EventHubClient.SendBatchAsync - 線程安全嗎?
- 6. .NET:JsonMediaTypeFormatter線程安全嗎?
- 7. multiset equal_range線程安全嗎?
- 8. pip線程安全嗎?
- 9. com.google.cloud.datastore.Datastore線程安全嗎?
- 10. WNetGetResourceInformation線程安全嗎?
- 11. qsort線程安全嗎?
- 12. work_queue線程安全嗎?
- 13. .NET DateTime線程安全嗎
- 14. DynamoDBContext線程安全嗎?
- 15. 在Python線程安全嗎?
- 16. java.lang.reflect.Method線程安全嗎?
- 17. HttpContext.Current.Cache線程安全嗎?
- 18. UIFont線程安全嗎?
- 19. C#+ =線程安全嗎?
- 20. Go bytes.Buffer線程安全嗎?
- 21. SynchronizationContext.Post()線程安全嗎?
- 22. Guava Table線程安全嗎?
- 23. EPiServer線程安全嗎?
- 24. 是java.sql.Connection線程安全嗎?
- 25. 是CreateChildContainer()線程安全嗎?
- 26. 是Thread.getStackTrace()線程安全嗎?
- 27. Windows'rand_s線程安全嗎?
- 28. 是DocumentBuilder.parse()線程安全嗎?
- 29. 是javax.sql.DataSource線程安全嗎?
- 30. putStrLn線程安全嗎?
您找到的代碼似乎含有您的答案 – ControlAltDel 2014-09-05 17:41:01
*可以安全地假設「我們不知道」? – hd1 2014-09-05 19:04:04