bcrypt के.NET कार्यान्वयन




bcrypt.net (4)

क्या आपने शायद इस एमएस BCryptCreateHash सी ++ समारोह की कोशिश की है ?? लगता है कि विंडोज सर्वर 2008 और विंडोज विस्टा से मौजूद है।

इसके अलावा, आप शायद निम्न एमएस सी # BCryptNative.cs कक्षा शायद भी देख सकते हैं।

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


पोस्टग्रेएसक्यूएल (जिसमें pg_crypto) से SQLite (जो नहीं है) से कुछ ले जाने पर मुझे एक बीसीआरपीटी कार्यान्वयन की आवश्यकता थी, इसलिए मैंने अपना खुद लिखा। इस संदेश से देखकर मुझे केवल इसकी आवश्यकता नहीं है, मैंने इस पर लाइसेंस थप्पड़ मारने और इसे जारी करने का फैसला किया है। यूआरएल है:

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

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

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

पुस्तकालय में पीबीकेडीएफ 2 कोड भी शामिल है जो किसी भी एचएमएसी के लिए काम करता है। नेट के एसएचए -1-केवल कार्यान्वयन के विपरीत (आज जोड़ा गया - मैं जल्द ही सी # में स्क्रिप करने का इरादा रखता हूं और इसके लिए पीएमकेडीएफ 2 एचएमएसी-एसएचए 256 के साथ आवश्यक है)। यदि आप चाहें तो आप भी इस पर आधारित एक योजना बना सकते हैं।


आप यहां .NET के लिए BCrypt का अद्यतन कार्यान्वयन पा सकते हैं: http://bcrypt.codeplex.com/


इस पल में 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




bcrypt.net