Fungsi crypt() PHP
Definisi dan penggunaan
Fungsi crypt() mengembalikan string yang dienkripsi menggunakan algoritma DES, Blowfish, atau MD5.
Perilaku fungsi ini berbeda di berbagai sistem operasi, beberapa sistem operasi mendukung lebih dari satu tipe algoritma. Saat pemasangan, PHP akan memeriksa algoritma yang tersedia dan yang digunakan.
Algoritma yang digunakan tergantung format dan panjang parameter salt. Salt dapat membuat pengamanan lebih aman dengan meningkatkan jumlah string yang dihasilkan oleh string yang digunakan untuk pengamanan spesifik.
Di sini ada beberapa konstanta yang digunakan bersamaan dengan fungsi crypt(). Nilai konstanta ini diset saat pemasangan PHP.
Konstanta:
[CRYPT_SALT_LENGTH] | Panjang pengamanan yang default. Menggunakan pengamanan DES standar, panjangnya 2. |
[CRYPT_STD_DES] | Hash berbasis algoritma DES standar menggunakan 2 karakter dari karakter "/./0-9A-Za-z" sebagai salt. Penggunaan karakter yang ilegal dalam salt akan menyebabkan kegagalan crypt(). |
[CRYPT_EXT_DES] | Hash berbasis algoritma DES yang diperluas. Salt adalah string 9 karakter, terdiri dari 1 garis bawah diikuti dengan 4 byte iterasi dan 4 byte salt. Mereka diencode dalam karakter yang dapat dicetak, setiap karakter 6 bit, karakter yang memiliki bit yang paling sedikit mendominan. 0 sampai 63 diencode menjadi "/./0-9A-Za-z". Penggunaan karakter yang ilegal dalam salt akan menyebabkan kegagalan crypt(). |
[CRYPT_MD5] | Hash MD5 menggunakan salt string berukuran 12 karakter yang dimulai dengan $1$. |
[CRYPT_BLOWFISH] | Algoritma Blowfish menggunakan salt seperti berikut: "$2a$", parameter cost 2 digit, "$", dan string 64 digit yang dihasilkan dari kombinasi karakter dari "./0-9A-Za-z". Penggunaan karakter di luar rentang ini dalam salt akan mengakibatkan crypt() mengembalikan string kosong. Parameter cost 2 digit adalah logaritma pangkat 2 dari jumlah pengulangan, range adalah 04-31, dan jika di luar rentang ini akan mengakibatkan kegagalan crypt(). |
CRYPT_SHA256 | Algoritma SHA-256 menggunakan salt string berukuran 16 karakter yang dimulai dengan $5$ untuk penghujan. Jika string salt dimulai dengan "rounds=<N>$", nilai numerik N akan digunakan untuk menentukan kali pengulangan penghujan, hal ini hampir seperti parameter cost algoritma Blowfish. Jumlah pengulangan default adalah 5000, minimum adalah 1000, dan maksimum adalah 999,999,999. Nilai N yang di luar rentang ini akan diubah menjadi nilai terdekat. |
CRYPT_SHA512 | Algoritma SHA-512 menggunakan salt string berukuran 16 karakter yang dimulai dengan $6$ untuk penghujan. Jika string salt dimulai dengan "rounds=<N>$", nilai numerik N akan digunakan untuk menentukan kali pengulangan penghujan, hal ini hampir seperti parameter cost algoritma Blowfish. Jumlah pengulangan default adalah 5000, minimum adalah 1000, dan maksimum adalah 999,999,999. Nilai N yang di luar rentang ini akan diubah menjadi nilai terdekat. |
Pada sistem yang mendukung berbagai algoritma, jika konstanta di atas diset ke "1", jika tidak diset ke "0".
Komentar:Tidak ada fungsi dekripsi yang relevan. Fungsi crypt() menggunakan algoritma satu arah.
Sintaks
crypt(str,salt)
Parameter | Deskripsi |
---|---|
str | Diperlukan. Tentukan string yang akan dienkripsi. |
salt | Opsional. Digunakan untuk menambah jumlah karakter yang dienkripsi untuk membuat enkripsi lebih aman. Jika parameter salt tidak disediakan, PHP akan menggenerate salt acak setiap kali fungsi ini dipanggil. |
Detil Teknis
Nilai Kembalian: | Kembalikan string yang dienkripsi atau string kurang dari 13 karakter, untuk membedakannya dengan salt ketika gagal. |
Versi PHP: | 4+ |
Update Log
Versi | Keterangan |
---|---|
5.3.2 | Dibuat berdasarkan implementasi Ulrich Drepper, menambah crypt berdasarkan algoritma SHA-256 dan SHA-512. |
5.3.2 | Perbaikan masalah algoritma Blowfish karena putar ilegal, kembalikan string "gagal" ("*0" atau "*1") daripada menggunakan algoritma DES. |
5.3.0 | PHP sekarang termasuk implementasi MD5 Crypt sendiri, termasuk algoritma DES standar, algoritma DES ekstensi, serta algoritma Blowfish. Jika sistem kurang dari implementasi yang relevan, PHP akan menggunakan implementasi sendiri. |
Instansi
Contoh 1
Dalam contoh ini, kita akan menguji berbagai algoritma:
<?php // Salt 2 karakter if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt('something','st')."\n<br>"; } else { echo "Standard DES tidak didukung.\n<br>"; } // Salt 4 karakter if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt('something','_S4..some')."\n<br>"; } else { echo "Extended DES tidak didukung.\n<br>"; } // Dimulai dengan $1$ 12 karakter if (CRYPT_MD5 == 1) { echo "MD5: ".crypt('something','$1$somethin$')."\n<br>"; } else { echo "MD5 tidak didukung.\n<br>"; } // Salt yang dimulai dengan $2a$. Parameter cost berdua digit: 09. 22 karakter if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>"; } else { echo "Blowfish DES tidak didukung.\n<br>"; } // Salt yang dimulai dengan $5$ berukuran 16 karakter. Jumlah standar adalah 5000. if (CRYPT_SHA256 == 1) { echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; else { echo "SHA-256 not supported.\n<br>"; } // Salt yang dimulai dengan $5$ berukuran 16 karakter. Jumlah standar adalah 5000. if (CRYPT_SHA512 == 1) { echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$'); } else { echo "SHA-512 not supported."; } ?>
Keluaran kode di atas (tergantung sistem operasi):
Standard DES: stqAdD7zlbByI Extended DES: _S4..someQXidlBpTUu6 MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w. Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9 SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/ oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.