Rumah >pembangunan bahagian belakang >Golang >Golang Gorm Fiber/argon2.Config undefined

Golang Gorm Fiber/argon2.Config undefined

王林
王林ke hadapan
2024-02-12 21:10:081226semak imbas

Golang Gorm Fiber / argon2.Config 未定义

editor php Baicao mungkin menghadapi masalah "tidak jelas" apabila menggunakan Golang Gorm Fiber dan argon2.Config. Masalah ini disebabkan terutamanya oleh kekurangan definisi atau konfigurasi yang sepadan. Untuk menyelesaikan masalah ini, kita perlu menyemak sama ada perpustakaan dan konfigurasi yang sepadan diperkenalkan dengan betul, dan memastikan ia digunakan dan dipanggil dengan betul dalam kod. Dengan pemeriksaan dan penyahpepijatan yang teliti, kami boleh menyelesaikan isu ini dan memastikan kod kami berjalan dengan betul.

Kandungan soalan

Saya cuba menukar daripada PHP kepada GO tetapi saya buntu dan saya meminta bantuan anda.

Saya cuba mencipta fungsi cincang kriptografi menggunakan Argon2 tetapi saya terus mendapat ralat "Undefined: argon2.Config" apabila saya menggunakan "argon2.Config{}". Saya telah menyusun semula projek itu beberapa kali tetapi tidak dapat mencari penyelesaian. Saya meminta bantuan anda untuk menyelesaikan masalah ini.

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
}

Penyelesaian

jika anda menggunakan kaedah pakej "golang.org/x/crypto/argon2" 您可以使用 argon2.IDKey(). Berikut ialah contoh yang berfungsi:

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
}

Atas ialah kandungan terperinci Golang Gorm Fiber/argon2.Config undefined. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam