2012-09-28 16 views
16

मेरे पास कोड है जो एंड्रॉइड पर अच्छा काम करता है। जब मैंने इसे जेआरई 1.6 के साथ अपनी विंडोज 64-बिट मशीन पर पोर्ट किया, तो कोड काम नहीं करता था।संदेश Digest.getInstance ("SHA256") को कॉल करते समय अपवाद

जब मैं कोड की निम्न पंक्ति चलाएँ:

final MessageDigest digest = MessageDigest.getInstance("SHA256") 

मैं निम्न अपवाद प्राप्त करें:

java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available 
at sun.security.jca.GetInstance.getInstance(Unknown Source) 
at java.security.Security.getImpl(Unknown Source) 
at java.security.MessageDigest.getInstance(Unknown Source) 

मैं दावा है कि यह मानक क्रिप्टो साथ SHA256 उपयोग करना संभव है इंटरनेट लोगों पर पाया प्रदाता जो सूर्य जेआरई के साथ आता है और लोग कहते हैं कि मुझे अन्य प्रदाता का उपयोग करने की आवश्यकता है उदाहरण के लिए बाउंसी कैसल।

मैं एक अलग प्रदाता का उपयोग नहीं करना पसंद करूंगा। क्या यह काम करना संभव है?

उत्तर

29

जब कोई संदेह है कि आप जेसीए सेवा के लिए किस एल्गोरिदम का उपयोग कर सकते हैं, तो आपका पहला बंदरगाह जेसीए Standard Algorithm Name Documentation होना चाहिए। एल्गोरिदम गारंटी एक JCA अनुरूप JVM में MessageDigest सेवा द्वारा समर्थित होने की हैं:

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

यह आम प्रदाताओं इन एल्गोरिदम के लिए उपनाम की आपूर्ति के लिए करने के लिए है, जिसके कारण यह शायद Bouncy कैसल के साथ काम करना चाहते हैं, लेकिन यदि आप पोर्टेबिलिटी को अधिकतम करने के कर सकते हैं इन पर कायम करना चाहिए।

आप निम्नलिखित के लिए अपने कोड को बदलते हैं, यह अपेक्षा के अनुरूप काम करेगा:

final MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
+0

हाँ, '" SHA256 पैरामीटर होना चाहिए "बाउंसी में एक उर्फ ​​मौजूद है। मेरे पास बाउंसी कैसल बग तय किया गया था जो 'SHA-256" के बजाय बाउंसी के प्रोटोकॉल पैकेजों में से एक में "SHA256" 'का उपयोग करता था, जो जेसीई में मानक नाम रहा है। यह पूर्ण न्यूनतम से अधिक स्वीकार करने का खतरा है - यह एक तरफ काम करता है लेकिन दूसरे नहीं। –

+1

तो, ओह, आप "गारंटीकृत" MD5 विफल होने पर क्या करते हैं। ओरेकल जेआरई में, लेकिन केवल कुछ मशीनों पर और दूसरों को नहीं ... यह मुझे अभी फंस गया है। :-( –

+0

क्या आपने अपने सुरक्षा प्रदाताओं की जांच की है? –

संबंधित मुद्दे