php小編草在使用Golang Gorm Fiber和argon2.Config時,可能會遇到"未定義"的問題。這個問題主要是由於缺少相應的定義或配置所導致的。要解決這個問題,我們需要檢查相應的庫和配置是否已正確引入,並確保它們在程式碼中得到正確的使用和呼叫。透過仔細檢查和調試,我們可以解決這個問題,讓我們的程式碼能夠正常運作。
我正在嘗試從 PHP 切換到 GO,但我陷入了困境,我請求您的幫助。
我正在嘗試使用 Argon2 建立密碼雜湊函數,但當我使用「argon2.Config{}」時,我不斷收到錯誤「未定義:argon2.Config」。我已經多次重新編譯該項目,但似乎找不到解決方案。我請求您協助解決此問題。
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 }
如果您使用套件 "golang.org/x/crypto/argon2"
您可以使用 argon2.IDKey()
方法。這是一個工作範例:
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 }
以上是Golang Gorm Fiber / argon2.Config 未定義的詳細內容。更多資訊請關注PHP中文網其他相關文章!