। bcrypt का .net कार्यान्वयन


116

क्या किसी को bcrypt के अच्छे कार्यान्वयन के बारे में पता है, मुझे पता है कि यह सवाल पहले भी पूछा जा चुका है लेकिन इसे बहुत कम प्रतिक्रिया मिली है। मैं बस एक कार्यान्वयन को पूरा करने के लिए अनिश्चित हूं जो कि Google में बदल जाता है और मैं सोच रहा हूं कि मैं System.Security.Cryptography नामस्थान में sha256 का उपयोग करके बेहतर हो सकता हूं, कम से कम तब मुझे पता है कि यह समर्थित है! आप क्या विचार हैं?

जवाबों:


58

ऐसा लगता है कि आप BCrypt.net की तलाश कर रहे हैं :

BCrypt.net, OpenBSD के ब्लोफिश-आधारित पासवर्ड हैशिंग कोड का एक कार्यान्वयन है, जिसे नील्स प्रोवोस और डेविड माज़िएरेस द्वारा "ए फ्यूचर-अडैप्टेबल पासवर्ड स्कीम" में वर्णित किया गया है। यह डेमियन मिलर द्वारा jBCrypt का एक सीधा पोर्ट है, और इस तरह एक ही BSD- शैली लाइसेंस के तहत जारी किया गया है। कोड पूरी तरह से प्रबंधित है और इसे किसी भी छोटे एंडियन सीएलआई कार्यान्वयन के साथ काम करना चाहिए - इसे Microsoft .NET और मोनो के साथ परीक्षण किया गया है।


हां, यही वह था जिसे मैंने Google के साथ भी पाया था। क्या आप इसका उपयोग करते हैं, या क्या आप जानते हैं कि इसका व्यापक रूप से उपयोग किया जाता है?
गारेथ

2
बीसीट्रिप का उपयोग करने के बारे में मैंने जो सोचा था, वह इस लेख के कारण था क्योंकि matasano.com/log/958/… और इसने दावा किया कि BCrypt जाने का रास्ता है।
गैरेथ

13
बस एक नोट जोड़ना चाहते थे कि यदि आप Windows Server 2008 पर BCrypt.net का उपयोग कर रहे हैं, तो आपको इसे BCrypt.dll के अलावा कुछ और नाम देने की आवश्यकता होगी या यह विस्टा में नए विंडोज एपीआई के साथ संघर्ष करेगा जो फ़ंक्शन को 'bcrypt' कहता है। dll ', इसलिए यदि आपके पास आपके वेब ऐप में Bcrypt.dll Bcrypt.dll है तो बिन / डायरेक्टरी विंडोज सही dll नहीं खोज पाएगा और आपको कुछ क्रिप्टोकरंसी मिलेंगी।
thelsdj

5
नोट: bCrypt (इच्छुक लोगों के लिए) का उपयोग करने के निम्न कारण। codahale.com/how-to-safely-store-a-password
thames

1
लेख को आगे बढ़ाया गया: chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow- टेबल- what-you-need-to-know-about-s.html
कोड सिल्वरबैक

25

BCrypt.Net इस समय सबसे लोकप्रिय पुस्तकालय प्रतीत होता है

http://bcrypt.codeplex.com/

यहाँ हैशिंग पासवर्ड के लिए इसका उपयोग करने का एक उदाहरण दिया गया है:

[TestMethod]
    public void BCryptTest()
    {
        const string password = "PASSWORD";
        const int workFactor = 13;

        var start = DateTime.UtcNow;
        var hashed = BCrypt.Net.BCrypt.HashPassword(password, workFactor);
        var end = DateTime.UtcNow;

        Console.WriteLine("hash length is {0} chars", hashed.Length);
        Console.WriteLine("Processing time is {0} with workFactor {1}", end - start, workFactor);
        Console.WriteLine("Hashed password: {0} ", hashed);
        Console.WriteLine("correct password {0}", BCrypt.Net.BCrypt.Verify("PASSWORD", hashed));
        Console.WriteLine("incorrect password {0}", BCrypt.Net.BCrypt.Verify("PASSWORd", hashed));
    }

नमूना उत्पादन:

hash length is 60 chars
Processing time is 00:00:01.0020000 with workFactor 13
Hashed password: $2a$13$iBqdG7ENBABEargiyzGlTexPsmviF/qrFxUZB2zce7HKF6MoBNhEq 
correct password True
incorrect password False


6

PostgreSQL (जिसमें pg_crypto) से SQLite (जो नहीं है) से कुछ स्थानांतरित करते समय मुझे एक BCrypt कार्यान्वयन की आवश्यकता थी, इसलिए मैंने अपना स्वयं का लिखा। इस संदेश को देखकर मुझे इसकी आवश्यकता ही नहीं है, मैंने इस पर एक लाइसेंस देने और इसे जारी करने का निर्णय लिया है। URL है:

http://zer7.com/software.php?page=cryptsharp

इसके पीछे ब्लोफिश कार्यान्वयन ब्रूस श्नाइयर के सार्वजनिक डोमेन सी कार्यान्वयन का एक बंदरगाह है, और सभी आधिकारिक परीक्षण वैक्टर पर सफल होता है।

बीसीक्रिप्ट कोड मैंने खुद कल्पना के आधार पर लिखा था। मैंने एक PHP स्क्रिप्ट भी बनाई है जो 0 से 100 की लंबाई के यादृच्छिक पासवर्ड और लवण उत्पन्न करती है, उन्हें रोती है, और उन्हें एक परीक्षण फ़ाइल में आउटपुट करती है। C # कोड इन 100% समय से मेल खाता है। आप स्क्रिप्ट का उपयोग करने और खुद का परीक्षण करने के लिए आपका स्वागत है।

लाइब्रेरी में PBKDF2 कोड भी शामिल है जो किसी भी HMAC के लिए काम करता है। .NET के SHA-1-only कार्यान्वयन के विपरीत (आज जोड़ा गया है - मैं C # में जल्द ही SCrypt करने का इरादा कर रहा हूं और जिसके लिए HMAC-SHA256 के साथ PBKDF2 की आवश्यकता है)। आप अपने आप को इस पर आधारित एक योजना बना सकते हैं, अगर आप चाहते थे।


0

गलत जवाब, कृपया नीचे देखें

.Net फ्रेमवर्क में सभी "Cng" (क्रिप्टोग्राफी नेक्स्ट जनरेशन) पोस्टफ़िक्स किए गए एल्गोरिदम अब bcrypt का उपयोग करते हैं। जैसे SHA256Cng


दरअसल MS BCrypt (BestCrypt) ब्लोफिश सिफर के आधार पर एक को संदर्भित नहीं करता है - टिप्पणी के लिए, RobbyD, धन्यवाद।
जवाब नहीं हटाएगा, बस अगर किसी और ने भी वही भ्रम पैदा किया हो।


1
उस संदर्भ में BCrypt एक Microsoft PR नाम BestCrypt का संदर्भ देता है। अधिक जानकारी के लिए stackoverflow.com/questions/9711568/… देखें ।
RobbyD

-2

क्या आपने इस MS BCryptCreateHash C ++ फ़ंक्शन को शायद आज़माया है ?? विंडोज सर्वर 2008 और विंडोज विस्टा से उपस्थित होने लगता है।

इसके अलावा, आप संभवतः निम्नलिखित MS C # BCryptNative.cs वर्ग की भी शायद जांच कर सकते हैं ।


देखें stackoverflow.com/questions/9711568/… - विंडोज़ bcrypt सामान bcrypt से संबंधित नहीं है।
बेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.