Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memastikan Keserasian Antara Bcrypt Node.js dan Bcrypt Golang untuk Pencincangan Kata Laluan?

Bagaimanakah Saya Boleh Memastikan Keserasian Antara Bcrypt Node.js dan Bcrypt Golang untuk Pencincangan Kata Laluan?

DDD
Lepaskan: 2024-12-06 06:09:15
asal
964 orang telah melayarinya

How Can I Ensure Compatibility Between Node.js's Bcrypt and Golang's Bcrypt for Password Hashing?

Pencincangan Kata Laluan dalam Golang Serasi dengan Bcrypt Node.js

Dalam Node.js, pakej bcrypt biasanya digunakan untuk pencincangan kata laluan pengguna. Apabila berhijrah ke Golang, adalah penting untuk mengekalkan keserasian dengan kata laluan cincang sedia ada yang disimpan dalam pangkalan data.

Kod Pencincangan Node.js Bcrypt

Kod Node.js yang disediakan menggunakan modul bcrypt untuk menghasilkan rentetan cincang. Ia menggunakan dua fungsi berurutan: genSalt untuk mencipta garam dan hash untuk menjana cincang menggunakan kata laluan dan garam.

Golang Bcrypt Hashing Equivalent

Pelaksanaan Golang yang setara menggunakan pakej golang.org/x/crypto/bcrypt akan menyerupai:

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost);
Salin selepas log masuk

Contoh Berfungsi

Untuk menunjukkan keserasian, contoh kod berikut menggambarkan pencincangan kata laluan dalam Golang dan mengesahkannya terhadap Node.js yang dijana hash:

package main

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

func main() {
    // Generate a hash from a password.
    password := []byte("SecretPassword")
    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println("Generated Hash:", string(hashedPassword))

    // Simulate Node.js-generated hash.
    nodejsHash := []byte("a$n8J51m8dYIm/3CmaFCizgO93Gkj/3RZIiI4S2G8NkyL2fKvsBpfHy")

    // Compare with the Golang-generated hash.
    err = bcrypt.CompareHashAndPassword(nodejsHash, password)
    if err != nil {
        fmt.Println("Passwords do not match.")
    } else {
        fmt.Println("Passwords match.")
    }
}
Salin selepas log masuk

Penggunaan

Untuk menggunakan kod ini, pastikan anda memasang dan mengimport pakej Golang yang diperlukan seperti yang ditunjukkan dalam contoh. Kemudian, hanya hantar kata laluan anda kepada GenerateFromPassword untuk menjana rentetan cincang. Untuk pengesahan kata laluan, gunakan CompareHashAndPassword untuk membandingkan kata laluan yang dicincang daripada pangkalan data dengan kata laluan yang disediakan. Jika ralat yang dikembalikan adalah sifar, kata laluan sepadan, mematuhi piawaian Node.js dan Golang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Keserasian Antara Bcrypt Node.js dan Bcrypt Golang untuk Pencincangan Kata Laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan