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

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

Linda Hamilton
Lepaskan: 2024-10-29 05:10:31
asal
363 orang telah melayarinya

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>
Salin selepas log masuk

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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan