मुझे .net core 3.1 में RIPEMD160 का कोई कार्यान्वयन नहीं मिल रहा है।
RIPEMD160 के लिए MS दस्तावेज़ नेट मानक, कोर 3.1, कोर 5.0 के लिए मौजूद नहीं है।
System.Security.Cryptography में मुझे इससे संबंधित कुछ भी नहीं मिला।
तृतीय पक्ष पैकेज देखने से पहले (शायद चिल्कट) मैं एक का उपयोग करने का प्रयास करना चाहूंगा ढांचा पुस्तकालय।
2 जवाब
माइक्रोसॉफ्ट ने .NET कोर में हैशिंग और क्रिप्टो एल्गोरिदम के "प्रबंधित" (पूरी तरह से .NET में कार्यान्वित) कार्यान्वयन को हटाने का फैसला किया (मुझसे पूछें क्यों नहीं)। उदाहरण के लिए देखें https://github.com/dotnet/runtime/issues/2094 (यह बिल्कुल RIPEMD160 के बारे में है):
RIPEMD160 एक एल्गोरिथ्म नहीं है जो OS क्रिप्टो परतों द्वारा प्रदान किया गया है, और .NET कोर अब क्रिप्टोग्राफ़िक एल्गोरिदम के प्रबंधित कार्यान्वयन को वहन नहीं करता है।
और msdn से:
*प्रबंधित कक्षाओं सहित सभी हैश एल्गोरिथम और हैश-आधारित संदेश प्रमाणीकरण (एचएमएसी) कक्षाएं, ओएस पुस्तकालयों के लिए स्थगित हैं। जबकि विभिन्न ओएस पुस्तकालय प्रदर्शन में भिन्न होते हैं, उन्हें संगत होना चाहिए।
मुझे नहीं पता कि इस बारे में कोई चर्चा हुई थी, या अगर किसी प्रबंधक ने फैसला किया कि इस तरह से करना सबसे अच्छा है या क्या।
एक सरल उपाय यह है कि .NET 4.7/.NET 4.8 में उपयोग किए गए कोड को पकड़ें और इसे सीधे उपयोग करें:
कोड एमआईटी के रूप में सोर्स किया गया है, इसलिए लाइसेंसिंग की कोई समस्या नहीं है, होमपेज देखें:
इस रिपॉजिटरी की फाइलें एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त हैं जब तक कि फाइल हेडर में अन्यथा निर्दिष्ट न हो। यदि फ़ाइल हेडर में केवल कॉपीराइट हेडर है (उदाहरण के लिए, "कॉपीराइट (सी) माइक्रोसॉफ्ट कॉर्पोरेशन। सभी अधिकार सुरक्षित।", आप संबंधित फ़ाइल को एमआईटी-लाइसेंस प्राप्त मान सकते हैं।
मैंने कुछ कक्षाओं को System.Security से कॉपी करना शुरू किया। .क्रिप्टोग्राफी लेकिन क्योंकि अन्य वर्गों/इंटरफेस पर कई विशेषताएं और निर्भरताएं हैं, मुझे वह समाधान पसंद नहीं है।
क्योंकि चिलकट थोड़ा पुराना लगता है (नेटस्टैंडर्ड 1.3) और प्रोजेक्ट में मैं पहले से ही BouncyCastleका उपयोग कर रहा था। a> तो अंत में मैंने अभी यह लिखा है:
type RIPEMD160 () =
static member ComputeHash (bytes: byte array) =
let hasher = Org.BouncyCastle.Crypto.Digests.RipeMD160Digest()
hasher.BlockUpdate(bytes, 0, bytes.Length)
let hash:byte array = Array.zeroCreate (hasher.GetDigestSize())
hasher.DoFinal(hash, 0) |> ignore
hash
संबंधित सवाल
नए सवाल
.net
.NET कोर के बारे में प्रश्नों के लिए उपयोग न करें - इसके बजाय [.net-core] का उपयोग करें। .NET फ्रेमवर्क मुख्य रूप से माइक्रोसॉफ्ट विंडोज ऑपरेटिंग सिस्टम के लिए डिज़ाइन किया गया एक सॉफ्टवेयर फ्रेमवर्क है। इसमें बेस क्लास लाइब्रेरी, कॉमन लैंग्वेज रनटाइम (आमतौर पर सीएलआर के रूप में संदर्भित), कॉमन टाइप सिस्टम (आमतौर पर सीटीएस के रूप में संदर्भित) और डायनेमिक भाषा रनटाइम का कार्यान्वयन शामिल है। यह C #, VB.NET, F # और C ++ / CLI सहित कई प्रोग्रामिंग भाषाओं का समर्थन करता है।