Saya mencoba membuat string acak dalam PHP, dan saya sama sekali tidak mendapatkan output dengan ini:
Apa yang saya lakukan salah? Untuk menjawab pertanyaan ini secara khusus, dua masalah:
Berikut cuplikan kode dengan koreksi:
Keluarkan string acak dengan panggilan di bawah ini:
Ada banyak jawaban untuk pertanyaan ini, tetapi tidak ada satupun dari mereka yang memanfaatkan Generator Pseudo-Random Cryptographically Secure (CSPRNG). Jawaban sederhana, aman, dan benar adalah dengan menggunakan RandomLib dan jangan menemukan kembali kemudi. Bagi Anda yang bersikeras menciptakan solusi Anda sendiri,
PHP 7.0.0 akan memberikan Menghasilkan bilangan bulat acak dengan aman di PHP bukan tugas sepele. Anda harus selalu memeriksa dengan pakar kriptografi StackExchange Anda sebelum Anda menggunakan algoritme buatan sendiri dalam produksi. Dengan generator integer yang aman, menghasilkan string acak dengan CSPRNG adalah jalan-jalan di taman. Membuat String yang Aman dan Acak
Penggunaan:
Demo: https://3v4l.org/b4PST (Abaikan PHP 5 kegagalan; perlu random_compat) Membuat string hexdec 20 char panjang:
Dalam PHP 7 ( random_bytes () ):
@tasmaniski: jawaban Anda berhasil untuk saya. Saya memiliki masalah yang sama, dan saya akan menyarankannya untuk mereka yang pernah mencari jawaban yang sama. Ini dia dari @tasmaniski:
Bergantung pada aplikasi Anda (saya ingin menghasilkan kata sandi), Anda dapat menggunakannya
Menjadi base64, mereka dapat berisi
Saya tahu ini mungkin agak terlambat untuk permainan, tetapi di sini adalah satu-liner sederhana yang menghasilkan string acak yang benar tanpa perulangan tingkat script atau penggunaan perpustakaan openssl.
Untuk memecahnya sehingga parameternya jelas
Metode ini bekerja dengan mengulangi daftar karakter secara acak, lalu mengocok string gabungan, dan mengembalikan jumlah karakter yang ditentukan. Anda selanjutnya dapat mengacak ini, dengan mengacak panjang
string yang dikembalikan, mengganti Cara yang lebih baik untuk mengimplementasikan fungsi ini adalah:
Tada!
Atau langsung gandakan nilai kembali:
Juga, dalam fungsi Anda, Anda memiliki sedikit kesalahan. Di dalam for loop, Anda perlu menggunakan
Pertama, Anda mendefinisikan alfabet yang ingin Anda gunakan:
Kemudian, gunakan
Akhirnya, Anda menggunakan data acak ini untuk membuat kata sandi.
Karena setiap karakter dalam
Atau, dan umumnya lebih baik, adalah menggunakan RandomLib dan SecurityLib :
Saya telah menguji kinerja fungsi paling populer di sana, waktu yang diperlukan untuk menghasilkan 1'000'000 string 32 simbol pada kotak saya adalah:
Harap dicatat, tidak penting berapa lama itu sebenarnya tetapi mana yang lebih lambat dan mana yang lebih cepat sehingga Anda dapat memilih sesuai dengan kebutuhan Anda termasuk kesiapan kriptografi, dll. substr () sekitar MD5 ditambahkan demi akurasi jika Anda memerlukan string yang lebih pendek dari 32 simbol. Demi jawaban: string tidak disatukan tetapi ditimpa dan hasil fungsi tidak disimpan. Metode Pendek ..Berikut adalah beberapa metode terpendek untuk menghasilkan string acak
Yang ini diambil dari sumber admin :
Adminer , alat manajemen basis data yang ditulis dalam PHP. Fungsi pembantu dari kerangka Laravel 5
Salah satu cara yang sangat cepat adalah melakukan sesuatu seperti:
Ini akan menghasilkan string acak dengan panjang 10 karakter. Tentu saja, beberapa orang mungkin mengatakan itu sedikit lebih berat di sisi komputasi, tetapi saat ini prosesor
dioptimalkan untuk menjalankan algoritma md5 atau sha256 dengan sangat cepat. Dan tentu saja, jika fungsi satu baris.
Versi fungsi yang diedit berfungsi dengan baik, hanya satu masalah yang saya temukan: Anda menggunakan karakter yang salah untuk menyertakan $ karakter, sehingga karakter sometimes terkadang merupakan bagian dari string acak yang dihasilkan. Untuk memperbaiki ini, ubah:
untuk:
Dengan cara ini hanya karakter terlampir yang digunakan, dan karakter ’tidak akan pernah menjadi bagian dari string acak yang dihasilkan. Satu kalimat lagi, yang menghasilkan string acak 10 karakter dengan huruf dan angka. Ini akan membuat array dengan
Catatan: hanya berfungsi di PHP 5.3+ Saya menyukai komentar terakhir yang menggunakan openssl_random_pseudo_bytes, tetapi itu bukan solusi bagi saya karena saya masih harus menghapus karakter yang tidak saya inginkan, dan saya tidak bisa mendapatkan string set panjang. Inilah solusi saya ...
Cara lain untuk menghasilkan string acak di PHP adalah:
Ada kode sederhana:
Ada panduan sederhana:
ada alternatif yang lebih baik untuk ini, banyak sudah diposting jadi saya hanya memberikan barang Anda kembali dengan perbaikan
juga Anda mungkin tertarik pada:
atau yang lain:
Saya tahu bahwa ini adalah pertanyaan lama dengan beberapa jawaban tetapi saya dapat mencoba memposting solusi saya ... gunakan fungsi ini untuk menghasilkan string alfanumerik acak khusus ...
Contoh (tes): jika Anda membutuhkan dua atau lebih string unik Anda dapat melakukan ini ...
$ string_1: $ string_2: Saya harap ini membantu. Sumber: PHP Fungsi yang Menghasilkan Karakter Acak Fungsi PHP ini berfungsi untuk saya:
Pemakaian:
Kelas dengan beberapa fungsi dari diskusi di atas.
akhirnya saya menemukan solusi untuk mendapatkan nilai acak dan unik .__ solusi saya adalah
waktu selalu mengembalikan timstamp dan selalu unik. Anda dapat menggunakannya dengan md5 untuk membuatnya lebih baik. Fungsi berikut menghasilkan string pseudo dari any length.
Anda
melakukannya dengan benar-benar salah karena Anda bergantung pada angka bukan karakter dan saya tidak yakin apakah Anda ingin output acak menjadi angka saja, jika demikian mengapa kebutuhan untuk mendapatkan semua huruf alfabet dan semua angka dan mengekstrak panjangnya? mengapa Anda tidak menggunakan anyways PHP menawarkan Anda fungsi yang sangat berguna untuk keperluan ini
Inilah cara saya melakukannya untuk mendapatkan kunci acak unik unik:
Anda dapat menggunakan waktu () karena ini adalah cap waktu Unix dan selalu unik dibandingkan dengan acak lainnya yang disebutkan di atas. Anda kemudian dapat menghasilkan md5sum itu dan mengambil panjang yang diinginkan dari string MD5 yang dihasilkan. Dalam hal ini saya menggunakan 10 karakter, dan saya bisa menggunakan string yang lebih panjang jika saya ingin membuatnya lebih unik. Saya harap ini membantu.
Sederhana dan elegan. Solusi satu baris akan menjadi
Ini satu kalimat. Anda akan mendapatkan setidaknya satu huruf kecil, satu huruf besar, satu angka, dan satu simbol. Menggunakan Untuk menyalin + menempel:
Dan sedikit lebih rusak:
Saya menggunakan Ini pasti dapat ditingkatkan (mengacak berapa banyak masing-masing karakter yang ada), tetapi cukup baik untuk tujuan saya. Ada 3 hal yang salah dengan kode Anda:
Lihat di bawah:
halo kamu bisa coba ini
anda juga dapat menggunakan md5 tepat waktu tetapi hati-hati. Anda harus menggunakan fungsi
Dalam metode ini, Anda dapat memilih panjang karakter saat membuat.
|