Fungsi crypt()
digunakan untuk dapat mengembalikan string berciri menggunakan algoritma DES, Blowfish, atau MD5.
Fungsi ini berperilaku berbeda pada sistem operasi yang berbeda. PHP memeriksa algoritma apa yang tersedia dan algoritma apa yang digunakan saat diinstal.
Parameter salt bersifat opsional. Namun, crypt()
dapat membuat sandi yang lemah tanpa salt. Pastikan untuk menentukan salt yang cukup kuat untuk keamanan yang lebih baik.
Ada beberapa konstanta yang digunakan bersama dengan fungsi crypt()
. Nilai konstanta ini ditetapkan oleh PHP saat diinstal.
Konstanta:
Pada sistem ini di mana fungsi ini mendukung beberapa algoritme, konstanta di atas disetel ke “1” jika didukung dan “0” jika tidak didukung.
Catatan: Tidak ada fungsi decrypt . Fungsi crypt()
menggunakan algoritma satu arah.
crypt(str,salt)
arameter | Deskripsi |
---|---|
str | Required. Menentukan string yang akan di-hash |
salt | Optional. salt sebagai dasar hashing |
Return Value: | Mengembalikan string yang dienkode atau string yang lebih pendek dari 13 karakter dan dijamin berbeda dari salt on failure |
---|---|
PHP Version: | 4+ |
Changelog: | PHP 5.6.0 – Menampilkan peringatan keamanan E_NOTICE jika salt dihilangkan. PHP 5.3.7 – Menambahkan mode Blowfish $2x$ dan $2y$. PHP 5.3.2 – Menambahkan SHA-256 dan SHA-512. Memperbaiki perilaku Blowfish pada putaran yang tidak valid mengembalikan string “kegagalan” (“* 0” atau “* 1”), alih-alih kembali ke DES. PHP 5.3.0 – PHP sekarang berisi implementasinya sendiri untuk MD5 crypt, Standard DES, Extended DES dan algoritma Blowfish dan akan menggunakannya jika sistem tidak memiliki dukungan untuk satu atau lebih algoritma. |
Contoh
Contoh ini akan menguji algoritma yang berbeda:
<?php // 2 karakter salt if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt('something','st')."\n<br>"; } else { echo "DES standar tidak didukung.\n<br>"; } // 4 karakter salt if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt('something','_S4..some')."\n<br>"; } else { echo "Extended DES tidak didukung.\n<br>"; } // 12 karakter salt dimulai dengan $1$ if (CRYPT_MD5 == 1) { echo "MD5: ".crypt('something','$1$somethin$')."\n<br>"; } else { echo "MD5 tidak didukung.\n<br>"; } // Salt dimulai dengan $2a$. Parameter biaya dua 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>"; } // 16 karakter salt dimulai dengan $5$. Jumlah putaran default adalah 5000. if (CRYPT_SHA256 == 1) { echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; } else { echo "SHA-256 tidak didukung.\n<br>"; } // 16 character salt starting with $6$. The default number of rounds is 5000. if (CRYPT_SHA512 == 1) { echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$'); } else { echo "SHA-512 tidak didukung."; } ?> /* Output (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.