मुझे कुछ कोड बनाए रखने के साथ कोई समस्या दिखाई दे रही है। नीचे दिए गए कोड में private static SHA1
सदस्य है (जो IDisposable
है लेकिन चूंकि यह static
है, इसे कभी अंतिम रूप देना नहीं चाहिए)।SHA1.ComputeHash क्यों कई धागे के साथ उच्च लोड के तहत विफल रहता है?
Caught exception. Safe handle has been closed"
Stack trace: Call stack where exception was thrown
at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 cbData, Int32 ibStart, Int32 cbSize)
at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 ibStart, Int32 cbSize)
at System.Security.Cryptography.HashAlgorithm.ComputeHash(Byte[] buffer)
कोड सवाल में है:
internal class TokenCache
{
private static SHA1 _sha1 = SHA1.Create();
private string ComputeHash(string password)
{
byte[] passwordBytes = UTF8Encoding.UTF8.GetBytes(password);
return UTF8Encoding.UTF8.GetString(_sha1.ComputeHash(passwordBytes));
}
मेरा प्रश्न स्पष्ट रूप से है कि क्या इस मुद्दे का कारण बन सकता हालांकि, तनाव में इस कोड को एक अपवाद चलता है कि यह बंद कर दिया गया फेंकता है। क्या SHA1.Create
पर कॉल चुपचाप विफल हो सकता है (कितने क्रिप्टोग्राफिक संसाधन उपलब्ध हैं)? क्या यह एपडोमेन नीचे जा रहा है?
कोई अन्य सिद्धांत?
क्या इस निपटान के साथ क्या करना है? इसके अलावा, कौन सा "SHA1" वर्ग है? –
क्या आप वाकई कक्षा SHA1 थ्रेडसेफ है? क्या आप विफल होने पर पासवर्ड को पकड़ने में सक्षम हैं? – Rob
@ जॉन सॉंडर्स, क्षमा करें आप सही हैं। इसका निपटान करने के लिए कुछ भी नहीं है। मैंने सोचा था कि सिस्टम पर फाइनलाइज़र। सुरक्षा। क्रिप्टोग्राफी .एचए 1 क्रिप्टो सेवा सेवा प्रदाता किसी भी तरह से ट्रिगर हो सकता है। http://msdn.microsoft.com/en-us/library/e7hyyd4e(v=vs.110).aspx – MvdD