Heim >Backend-Entwicklung >Golang >Golang Gorm Fiber/argon2.Config undefiniert

Golang Gorm Fiber/argon2.Config undefiniert

王林
王林nach vorne
2024-02-12 21:10:081248Durchsuche

Golang Gorm Fiber / argon2.Config 未定义

php-Editor Baicao kann bei der Verwendung von Golang Gorm Fiber und argon2.Config auf „undefinierte“ Probleme stoßen. Dieses Problem wird hauptsächlich durch das Fehlen einer entsprechenden Definition oder Konfiguration verursacht. Um dieses Problem zu lösen, müssen wir prüfen, ob die entsprechenden Bibliotheken und Konfigurationen korrekt eingeführt werden und sicherstellen, dass sie im Code korrekt verwendet und aufgerufen werden. Durch sorgfältige Prüfung und Fehlerbehebung können wir dieses Problem beheben und dafür sorgen, dass unser Code ordnungsgemäß ausgeführt wird.

Frageninhalt

Ich versuche, von PHP auf GO umzusteigen, aber ich stecke nicht fest und bitte um Ihre Hilfe.

Ich versuche, eine kryptografische Hash-Funktion mit Argon2 zu erstellen, erhalte jedoch ständig die Fehlermeldung „Undefiniert: argon2.Config“, wenn ich „argon2.Config{}“ verwende. Ich habe das Projekt mehrmals neu kompiliert, kann aber anscheinend keine Lösung finden. Ich bitte um Ihre Hilfe bei der Lösung dieses Problems.

func hashPassword(password string) []byte {
    // Şifreleme parametreleri
    timeCost := 1                 // İşlem süresi
    memory := 64 * 1024           // // Bellek miktarı
    threads := 4                  //  İş parçacığı sayısı
    keyLength := 32               // Oluşturulacak hash uzunluğu
    salt := []byte("unique_salt") // Her kullanıcı için benzersiz

    // Argon2 işlemi için hasher oluştur
    hasher := argon2.Config{
        Time:    uint32(timeCost),
        Memory:  uint32(memory),
        Threads: uint8(threads),
        KeyLen:  uint32(keyLength),
    }

    // Şifreyi hashle
    hashedPassword := hasher.Hash(password, salt, nil)

    return hashedPassword
}

Workaround

wenn Sie die Paketmethode "golang.org/x/crypto/argon2" 您可以使用 argon2.IDKey() verwenden. Hier ist ein funktionierendes Beispiel:

func HashPassword(password string) (hashedPassword string) {

    const (
        timeCost  uint32 = 1         // İşlem süresi
        memory    uint32 = 64 * 1024 // // Bellek miktarı
        threads   uint8  = 4         //  İş parçacığı sayısı
        keyLength uint32 = 32        // Oluşturulacak hash uzunluğu
    )

    salt := []byte("unique_salt") // Her kullanıcı için benzersiz

    // generate hashedpassword
    hash := argon2.IDKey([]byte(password), salt, timeCost, memory, threads, keyLength)

    // Base64 encode the salt and hashed password.
    b64Salt := base64.RawStdEncoding.EncodeToString(salt)
    b64Hash := base64.RawStdEncoding.EncodeToString(hash)

    format := "$argon2id$v=%d$models=%d,t=%d,p=%d$%s$%s"

    // final password in recommended format
    hashedPassword = fmt.Sprintf(format, argon2.Version, memory, timeCost, threads, b64Salt, b64Hash)
    return hashedPassword
}

Das obige ist der detaillierte Inhalt vonGolang Gorm Fiber/argon2.Config undefiniert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen