node.js गोलांग में पासवर्ड हैशिंग(नोड.जेएस के साथ संगत)?




go bcrypt (2)

मैंने उपयोगकर्ता प्रमाणीकरण के लिए नोड.जेएस + पासपोर्ट के साथ एक साइट स्थापित की है।

अब मुझे गोलांग में माइग्रेट करने की आवश्यकता है, और डीबी में सहेजे गए उपयोगकर्ता पासवर्ड के साथ प्रमाणीकरण करने की आवश्यकता है।

Node.js एन्क्रिप्शन कोड है:

    var bcrypt = require('bcrypt');

    bcrypt.genSalt(10, function(err, salt) {
        if(err) return next(err);

        bcrypt.hash(user.password, salt, function(err, hash) {
            if(err) return next(err);
            user.password = hash;
            next();
        });
    });

Golang के साथ Node.js bcrypt के रूप में एक ही हैश स्ट्रिंग कैसे करें?


Go.crypto से go.crypto पैकेज पर एक नज़र go.crypto (दस्तावेज़ here )।

इसे स्थापित करने के लिए, उपयोग करें

go get golang.org/x/crypto/bcrypt

(आपको code.google.com के साथ जाने के लिए उपयोग करने में सक्षम होने के लिए mercurial इंस्टॉल करना होगा)

Bcrypt पैकेज के उपयोग का वर्णन करने वाला एक ब्लॉग एंट्री here पाया जा सकता here । यह उस व्यक्ति से है जिसने पैकेज लिखा था, इसलिए इसे काम करना चाहिए;)

आपके द्वारा उपयोग किए जा रहे node.js लाइब्रेरी में एक अंतर यह है कि जाने वाले पैकेज में (निर्यात) जेनसाल्ट फ़ंक्शन नहीं है, लेकिन जब आप bcrypt.GenerateFromPassword को कॉल करते हैं तो यह स्वचालित रूप से नमक उत्पन्न करेगा।


golang.org/x/crypto/bcrypt पैकेज का उपयोग करके, मेरा मानना ​​है कि बराबर होगा:

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)

कार्य उदाहरण:

package main

import (
    "golang.org/x/crypto/bcrypt"
    "fmt"
)

func main() {
    password := []byte("MyDarkSecret")

    // Hashing the password with the default cost of 10
    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(hashedPassword))

    // Comparing the password with the hash
    err = bcrypt.CompareHashAndPassword(hashedPassword, password)
    fmt.Println(err) // nil means it is a match
}




bcrypt