Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Terdapat True Go yang Setara dengan Fungsi crypt() PHP?

Adakah Terdapat True Go yang Setara dengan Fungsi crypt() PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-29 05:10:31300semak imbas

Is There a True Go Equivalent to PHP's crypt() Function?

Mencari Go Equivalent untuk Fungsi crypt() PHP

Fungsi kript dalam PHP dan Golang

Pengenalan Masalah

Fungsi PHP crypt() menjana nilai cincang bagi rentetan tertentu menggunakan algoritma tertentu. Timbul persoalan baru-baru ini mencari persamaan Golang bagi fungsi ini yang akan menghasilkan hasil yang sama untuk input dan nilai cincang tertentu.

Percubaan Yang Tidak Berjaya

Beberapa percubaan telah dibuat untuk melaksanakan Pergi bersamaan dengan fungsi crypt() PHP:

  • Percubaan 1: Modul go-crypt tidak menghasilkan hasil yang sama.
  • Percubaan 2 : Menentukan fungsi crypt tersuai menggunakan kebolehoperasian C juga gagal.
  • Percubaan 3: Pakej bcrypt tidak menyokong algoritma CRYPT_BLOWFISH yang digunakan oleh PHP5.3 dan lebih awal.

Penyelesaian

Walaupun tidak menemui persamaan "Go crypt" yang tepat, alternatif telah ditemui:

  • Menggunakan pakej golang.org/x/crypto/bcrypt, fungsi bcrypt.CompareHashAndPassword() boleh digunakan untuk membandingkan kata laluan teks biasa dengan nilai cincang.

Contoh

Kod Go berikut boleh digunakan:

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

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

Kod ini akan mengembalikan sifar jika versi bcrypt "masukkan-kata laluan baharu" adalah sama dengan nilai cincang yang disediakan; jika tidak, ia akan mengembalikan ralat.

Nota Tambahan

  • Fungsi crypt() PHP menyokong pelbagai algoritma pencincangan, termasuk sha256, sha512, blowfish, dsb.
  • Dalam Go, adalah perlu untuk menyatakan secara eksplisit jenis cincang dan kos apabila menggunakan pakej bcrypt.
  • Untuk senario khusus dalam soalan, kewujudan $2a$ sebagai awalan dalam nilai cincang mencadangkan penggunaan cincang jenis Blowfish.

Atas ialah kandungan terperinci Adakah Terdapat True Go yang Setara dengan Fungsi crypt() PHP?. 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