2009-07-24 14 views
12

पढ़ने (अभी तक एक) Jeff Atwood द्वारा post कम या ज्यादा यह निष्कर्ष दिया कि हमें नश्वर डेवलपर्स एन्क्रिप्शन के साथ भी शामिल नहीं हो रही किया जाना चाहिए के बाद, मैं सोच क्या पुस्तकालय मैं का उपयोग करना चाहिए छोड़ रहा हूँ। मुझे लगता है कि केवल दो पुस्तकालयों में पाया गया है कि वे एंटीलिब और Bouncy Castle हैं, लेकिन वे मेरे लिए .NET क्रिप्टोग्राफी एपीआई की तुलना में अधिक अमूर्त नहीं लगते हैं।अनुशंसित नेट एन्क्रिप्शन पुस्तकालय

मुझे लगता है कि मैं क्या सोच रहा हूं कि अगर "क्रिप्टोग्राफी पुस्तकालयों का jQuery" है जो सरल, व्यापक रूप से भरोसेमंद, खुला और अच्छी तरह से प्रलेखित है।

+6

'System.Security.Cryptography' के साथ क्या गलत है? – Thorarin

+3

@ थोरिनिन - यही वह है जो मैंने हमेशा किया है, लेकिन मुझे लगता है कि इसका मूल कारण यह है कि इसका उपयोग न करने का तर्क है क्योंकि उस एपीआई में इतने सारे विकल्प हैं कि जब तक आप सबकुछ समझ नहीं लेते, तो आप कुछ गलत कर देंगे । – JeremyWeir

+0

वह अन्य जो कि कलात्मक में उल्लेख करता है वह है Keyczar – ChrisW

उत्तर

16

संपादित करें: यहाँ https://github.com/quozd/awesome-dotnet/blob/master/README.md#cryptography से लोकप्रिय क्रिप्टो पुस्तकालयों के लिए एक व्यापक सूची है:

  • BouncyCastle - नेट System.Security.Cryptography के साथ मिलकर, सीएलआर पर क्रिप्टोग्राफिक एल्गोरिदम के लिए संदर्भ कार्यान्वयन।
  • HashLib - HashLib लगभग सभी हैश एल्गोरिदम क्या तुमने कभी देखा है का एक संग्रह है, यह लगभग सब कुछ का समर्थन करता है और बहुत उपयोग करने के लिए आसान है
  • libsodium-net - नेट के लिए libsodium - एक सुरक्षित क्रिप्टोग्राफिक पुस्तकालय
  • Pkcs11Interop - प्रबंधित स्ट्रीम एन्क्रिप्शन libsodium और Protobuf
  • SecurityDriven.Inferno साथ & डिक्रिप्शन - - नेट क्रिप्टो पुस्तकालय अप्रबंधित पीकेसीएस # 11 पुस्तकालयों कि क्रिप्टोग्राफिक हार्डवेयर
  • StreamCryptor के लिए पहुँच प्रदान के लिए .NET आवरण। पेशेवर लेखा परीक्षा।

मूल उत्तर निम्नानुसार है।


Bouncy कैसल पुस्तकालय वास्तव में एक अच्छी तरह से सम्मानित, और परिपक्व एन्क्रिप्शन पुस्तकालय है, लेकिन क्या शानदार तरीका कार्यक्षमताओं कि सही नेट ढांचे में निर्माण कर रहे हैं के कई उपयोग करने के साथ गलत क्या है?

System.Security.Cryptography Namespace

मेरे अनुभव में, इन कार्यान्वयन, रॉक-ठोस हैं कई विकल्प प्रदान करते हैं (उदाहरण के लिए: आप आमतौर पर से चुनने के लिए एक Crypto API, CNG और प्रबंधित प्रत्येक एल्गोरिथ्म के कार्यान्वयन मिल गया है), और आप ' "इसे गलत समझें" पर नहीं जा रहे हैं, क्योंकि आप कार्यान्वयन का उपयोग कर रहे हैं। यदि आप थोड़ा चिंतित हैं कि आप का उपयोग गलत तरीके से कर सकते हैं, तो आप हमेशा MSDN's own example code का पालन कर सकते हैं।

+1

के लिए भी मुझे लगता है कि मैंने जो लेख (और उनके पूर्ववर्ती) से जुड़ा हुआ है, इस कारण से पर्याप्त कारण बताते हैं कि हमारे अधिकांश डेवलपर्स को शायद क्यों नहीं लेना चाहिए उस नामस्थान का उपयोग कर दूर। तो मुझे लगता है कि यह कहना है कि मैं सिर्फ अच्छी सलाह की तरह लग रहा हूं। http://www.codinghorror.com/blog/archives/001275.html – JeremyWeir

+0

आप रिजेंडेल कार्यान्वयन के उदाहरण से लिंक करते हैं, लेकिन यह मेरे सभी अलग-अलग एल्गोरिदम के बीच निर्णय लेने का निर्णय लेता है। मैं एक अमूर्त पसंद करूंगा जिसने मुझे एन्क्रिप्टेडस्ट्रिंगफोरब्रोसर() (जेफ द्वारा दिया गया एक उदाहरण) जैसे विधियों को दिया है ताकि एक विशेषज्ञ हुज के नीचे रिजेंडेल या एसेस का उपयोग करने का निर्णय ले सके। – JeremyWeir

+0

@jayrdub - मैं देखता हूं कि आप अमूर्तता के बारे में क्या कह रहे हैं, लेकिन मुझे नहीं लगता कि अतिरिक्त कोड की पूरी पूर्ण परत (बीसी की तरह तीसरे पक्ष के मुक्ति के अनुसार) आवश्यक है। आप इसे अपने आप को अच्छे कारण से लागू नहीं करना चाहते हैं, और आप कार्यान्वयन को "दुरुपयोग" और सुरक्षा को कमजोर नहीं करना चाहते हैं। सभी अच्छी चीजें, लेकिन मुझे लगता है कि यह ढांचे के अंतर्निर्मित वर्गों और एमएसडीएन पर उदाहरण कोड के साथ आसानी से हासिल किया जा सकता है। उदाहरण में "एन्क्रिप्टस्ट्रिंगटॉइट्स" स्टाइल फ़ंक्शन देता है जो इसे कमजोर सुरक्षा के बिना तारों के लिए उपयोग करने के लिए "नो-ब्रेनर" बनाता है। – CraigTP

5

Bouncy Castle बहुत व्यापक रूप से सम्मानित किया जा रहा है

6

आपने अधिकतम "पूरी तरह से एन्क्रिप्शन दिनचर्या लागू नहीं करें" को अधिकतम समझा है। इसका क्या अर्थ है: अपने स्वयं के आरएसए/डीएसए/जो भी एन्क्रिप्शन एल्गोरिदम रोल न करें। इसका मतलब यह नहीं है कि आपको किसी ऐसे व्यक्ति द्वारा लिखित किसी का उपयोग नहीं करना चाहिए जो जानता है कि वे क्या कर रहे हैं। असल में, यदि कुछ भी हो, तो आपके और विश्वसनीय एल्गोरिदम के बीच और परतें जोड़ने से आपको चोट पहुंचानी पड़ेगी, न कि विपरीत।

+0

मैं इसके साथ सहमत हूं। –

+1

इसका भी अर्थ है "अपना स्वयं का एल्गोरिदम न बनाएं"। "मैं नहीं देख सकता कि मैं इसे कैसे तोड़ूंगा, इसलिए मैं नहीं देख सकता कि कोई और कैसे करेगा" आपको सुरक्षा नहीं देता है। –

+1

मैं असहमत नहीं हूं, मैं बस इस बात पर समझने की कोशिश कर रहा हूं कि वहां कुछ भयानक लाइब्रेरी है या नहीं, जिस तरह से मैं जेईएफ ने .NET के एपीआई का उपयोग करने से बचने की कोशिश करने की कोशिश की है "कोड का एक सिद्ध, डोमेन-विशेषज्ञ-परीक्षण सेट है कि हजारों डेवलपर पहले से ही भरोसा नहीं करते हैं"। मुझे लगता है कि वहां नहीं है (शायद मैंने जो दो उल्लेख किया है)। – JeremyWeir

0

एंटीलिब क्रिप्टोग्राफी ब्लॉक अधिकांश एन्क्रिप्शन/हैशिंग आवश्यकताओं के लिए अच्छी तरह से काम करता है।

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