Maison > développement back-end > Golang > Golang Gorm Fibre/argon2.Config non défini

Golang Gorm Fibre/argon2.Config non défini

王林
Libérer: 2024-02-12 21:10:08
avant
1202 Les gens l'ont consulté

Golang Gorm Fiber / argon2.Config 未定义

L'éditeur php Baicao peut rencontrer des problèmes "indéfinis" lors de l'utilisation de Golang Gorm Fiber et argon2.Config. Ce problème est principalement dû au manque de définition ou de configuration correspondante. Pour résoudre ce problème, nous devons vérifier si les bibliothèques et configurations correspondantes sont introduites correctement et nous assurer qu'elles sont utilisées et appelées correctement dans le code. Avec une inspection et un débogage minutieux, nous pouvons résoudre ce problème et faire fonctionner notre code correctement.

Contenu de la question

J'essaie de passer de PHP à GO mais je suis bloqué et je demande votre aide.

J'essaie de créer une fonction de hachage cryptographique à l'aide d'Argon2 mais j'obtiens toujours l'erreur « Non défini : argon2.Config » lorsque j'utilise « argon2.Config{} ». J'ai recompilé le projet plusieurs fois mais je n'arrive pas à trouver de solution. Je sollicite votre aide pour résoudre ce problème.

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
}
Copier après la connexion

Workaround

si vous utilisez la méthode package "golang.org/x/crypto/argon2" 您可以使用 argon2.IDKey(). Voici un exemple fonctionnel :

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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal