Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Kefungsian crypt() PHP dengan Blowfish di Golang?

Bagaimana untuk Mencapai Kefungsian crypt() PHP dengan Blowfish di Golang?

Susan Sarandon
Susan Sarandonasal
2024-10-28 06:32:02380semak imbas

How to Achieve the Functionality of PHP's crypt() with Blowfish in Golang?

Golang Equivalent of PHP's crypt() Function with Support for Blowfish

PHP's crypt() function menawarkan pelbagai kaedah pencincangan, termasuk blowfish. Percubaan untuk meniru kelakuannya di Golang telah terbukti mencabar kerana ketiadaan padanan langsung.

Penyelesaian Alternatif

Walaupun kekurangan crypt() Golang yang setara , alternatif yang berkesan tersedia menggunakan pakej golang.org/x/crypto/bcrypt. Coretan kod berikut memberikan contoh:

<code class="go">import "golang.org/x/crypto/bcrypt"

// Check whether the bcrypt version of "enter-new-password" matches "a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2".
check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password"))
log.Println(check)</code>

Jika cincangan bcrypt bagi "masukkan-kata laluan baharu" sepadan dengan cincang yang disediakan, semak akan menjadi sifar. Jika tidak, semakan akan ditetapkan kepada objek ralat.

Pertimbangan

Fungsi crypt() PHP menyokong pelbagai algoritma pencincangan, seperti sha256, sha512 dan blowfish. Di Golang, adalah perlu untuk menyatakan secara eksplisit jenis cincang, kos dan parameter lain.

Awalan $2a$ dalam cincang yang disediakan mencadangkan penggunaan algoritma berasaskan blowfish. Beberapa percubaan awal untuk penyelesaian tidak mengambil kira perkara ini, yang membawa kepada keputusan yang salah.

Fail golang.org/x/crypto/bcrypt/bcrypt_test.go menawarkan contoh tambahan tentang cara memanfaatkan pakej ini dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Kefungsian crypt() PHP dengan Blowfish di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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