SecureRandom
धागा सुरक्षित है? यही है, इसे शुरू करने के बाद, अगले यादृच्छिक संख्या तक पहुंच थ्रेड सुरक्षित होने पर निर्भर हो सकती है? स्रोत कोड की जांच करना यह दिखाता है कि यह है, और this bug report इंगित करता है कि थ्रेड सुरक्षित के रूप में प्रलेखन की कमी एक जावडोक मुद्दा है। क्या किसी ने पुष्टि की है कि वास्तव में यह धागा सुरक्षित है?क्या सुरक्षितरैंड धागा सुरक्षित है?
उत्तर
हां, यह है। कई धागे का उपयोग कर रहे हैं, तो एक भी SecureRandom
, वहाँ विवाद है कि प्रदर्शन दर्द होता है हो सकता है यह Random
है, जो हमेशा एक वास्तविक threadsafe कार्यान्वयन था फैली हुई है, और, से Java 7, explicitly guarantees threadsafety.
। दूसरी ओर, SecureRandom
उदाहरण प्रारंभ करना अपेक्षाकृत धीमा हो सकता है। चाहे वैश्विक आरएनजी साझा करना सबसे अच्छा है, या प्रत्येक थ्रेड के लिए एक नया निर्माण करने के लिए आपके आवेदन पर निर्भर करेगा। ThreadLocalRandom
वर्ग को SecureRandom
का समर्थन करने वाले समाधान प्रदान करने के लिए पैटर्न के रूप में उपयोग किया जा सकता है।
हां। यह पूरी तरह से थ्रेड-सुरक्षित है। दरअसल, मैं शिकायत करता हूं कि ताला बहुत आक्रामक है। संपूर्ण engineNextBytes()
सिंक्रनाइज़ किया गया है।
आपके साथ स्पष्ट होने के लिए, मुझे नहीं पता कि यह सुरक्षित नहीं है या नहीं। थ्रेडिंग समस्या शायद अधिक यादृच्छिकता पेश करती है :)
यह * सुरक्षित * यादृच्छिक है, इसे सटीक रूप से उपयोग करना बहुत महत्वपूर्ण है। मुझे नहीं लगता कि यह अधिक यादृच्छिकता पेश करता है। जैसे गैर थ्रेड सुरक्षित यादृच्छिक कई धागे में एक ही यादृच्छिक संख्या उत्पन्न कर सकता है - इसका मतलब यह हो सकता है कि एक धागा किसी अन्य थ्रेड के लिए उत्पन्न संख्या को चुरा सकता है, इसका उपयोग हैकर द्वारा किया जा सकता है। – kan
SecureRandom
का वर्तमान कार्यान्वयन थ्रेड सुरक्षित है, विशेष रूप से दो उत्परिवर्तनीय विधियां nextBytes(bytes[])
और setSeed(byte[])
सिंक्रनाइज़ हैं।
ठीक है, जहाँ तक मैं बता कर लिया है, सभी परिवर्तनशील तरीकों अंत में उन दो विधियों के माध्यम से रूट किया जाता है, और SecureRandom
Random
में कुछ तरीकों को ओवरराइड करता है कि सुनिश्चित करने के लिए। यदि भविष्य में कार्यान्वयन बदल जाता है तो कौन सा काम करता है लेकिन भंगुर हो सकता है।
सबसे अच्छा समाधान मैन्युअल रूप से SecureRandom
उदाहरण पर सिंक्रनाइज़ करना है। इसका मतलब है कि प्रत्येक कॉल स्टैक एक ही ऑब्जेक्ट पर दो ताले हासिल करेगा, लेकिन यह आमतौर पर आधुनिक जेवीएम पर बहुत सस्ता है। यही है, स्पष्ट रूप से स्वयं को सिंक्रनाइज़ करने में बहुत अधिक नुकसान नहीं है। उदाहरण के लिए:
SecureRandom rnd = ...;
byte[] b = new byte[NRANDOM_BYTES];
synchronized (rnd) {
rnd.nextBytes(b);
}
- 1. क्या console.writeline धागा सुरक्षित है?
- 2. क्या java.lang.reflect.Method धागा सुरक्षित है?
- 3. क्या DocumentBuilder.parse() धागा सुरक्षित है?
- 4. क्या SoapHttpClientProtocol धागा सुरक्षित है?
- 5. क्या एमएसएमक्यू धागा सुरक्षित है?
- 6. क्या closesocket धागा सुरक्षित है?
- 7. Hunspell धागा सुरक्षित है?
- 8. ACAccount धागा सुरक्षित है?
- 9. java.sql.Connection धागा सुरक्षित है?
- 10. java.util.Observable धागा-सुरक्षित है?
- 11. putStrLn धागा-सुरक्षित है?
- 12. सुरक्षाContextHolder धागा सुरक्षित है?
- 13. unmodifiableList धागा सुरक्षित है?
- 14. int है? सुरक्षित धागा?
- 15. java.util.UUID धागा सुरक्षित है?
- 16. क्या यह जावा क्लास धागा सुरक्षित है?
- 17. क्या नक्शा संरचना धागा-सुरक्षित है?
- 18. एनएसटीमर क्या यह धागा सुरक्षित है?
- 19. Enum.TryParse - क्या यह धागा सुरक्षित है?
- 20. क्या लॉग 4j धागा सुरक्षित नहीं है?
- 21. क्या एक Django सत्र धागा सुरक्षित है?
- 22. विस्तार विधि धागा सुरक्षित है?
- 23. पायथन शब्दकोश धागा सुरक्षित है?
- 24. Django मिडलवेयर धागा सुरक्षित है?
- 25. java.util.Vector serialization धागा-सुरक्षित है?
- 26. सुरक्षित धागा ढेर आकार?
- 27. धागा सुरक्षित हैश मानचित्र?
- 28. धागा सुरक्षित नक्शा जावा
- 29. क्या अमरूद की अपरिवर्तनीय सूची है। बिल्डर धागा सुरक्षित है?
- 30. है नेट के StringBuilder धागा सुरक्षित
अद्यतन के लिए धन्यवाद। विचित्र रूप से, बग को चिह्नित किया गया है "ठीक नहीं होगा।" लेकिन उन्होंने इसे वैसे भी तय किया। ओह ठीक है, मैं उन्हें अपने बग डेटाबेस का आकार ईर्ष्या नहीं देता हूं। – Yishai
'सिक्योररैंडम' शुरू करने से न केवल धीमा हो सकता है, लेकिन संभावित रूप से लापता एंट्रॉपी –
@ वाल्टरट्रॉस हैंग के कारण संभावित रूप से लटका सकता है? मैंने सिस्टम को 10 या 15 मिनट लगते हैं, लेकिन मैंने कभी एक लटका नहीं देखा है। एक कार्यान्वयन जो धीरे-धीरे अपने एन्ट्रॉपी पूल को खिलाने के लिए गारंटी नहीं देता है, ओएस में एक बग की तरह लगता है। – erickson