PHP crypt () function
Definisi dan Penggunaan
crypt () mengembalikan fungsi penggunaan DES, Blowfish, atau algoritma MD5 untuk mengenkripsi string.
Pada sistem operasi yang berbeda, perilaku yang berbeda dari fungsi, beberapa sistem operasi mendukung lebih dari satu jenis algoritma. Saat memasang, PHP akan memeriksa apa yang tersedia dan apa algoritma algoritma.
Algoritma yang tepat bergantung pada format dan panjang argumen garam. garam bisa membuat enkripsi lebih aman dengan meningkatkan jumlah dengan string tertentu dengan metode enkripsi khusus untuk menghasilkan string.
Berikut adalah beberapa konstanta dan crypt () function digunakan dengan. Nilai konstan ditetapkan pada instalasi dengan PHP.
konstan:
- [CRYPT_SALT_LENGTH] - default panjang enkripsi. Menggunakan enkripsi DES standar, panjang 2
- [CRYPT_STD_DES] - enkripsi DES berdasarkan standar garam 2-karakter, dari alfabet "./0-9A-Za-z". karakter yang tidak valid dalam garam akan menyebabkan fungsi gagal.
- [CRYPT_EXT_DES] - Super enkripsi berbasis DES memiliki garam 9 karakter dengan garis bawah di belakang dengan 4 byte count iterasi dan 4 byte komposisi garam. Ini dikodekan sebagai karakter yang dapat dicetak, masing-masing 6, karakter paling signifikan pertama. 0-63 nilai dikodekan sebagai "./0-9A-Za-z". karakter yang tidak valid dalam garam akan menyebabkan fungsi gagal.
- [CRYPT_MD5] - enkripsi MD5 memiliki garam 12 karakter, dimulai dengan $ 1 $.
- [CRYPT_BLOWFISH] - enkripsi Blowfish memiliki $ 2a $, $ 2x $ atau $ 2thn $ awal garam, double-digit parameter biaya, "$", serta dari alfabet "./0-9A-Za-z" 22 karakter. Gunakan selain karakter alfabet akan memicu fungsi mengembalikan sebuah string 0 ini. "$" Parameter adalah basis 2 logaritma dari jumlah iterasi algoritma hashing Blowfish harus dalam 04-31 kisaran. Nilai di luar kisaran ini akan menyebabkan fungsi gagal.
- [CRYPT_SHA_256] - enkripsi SHA-256 memiliki garam 16 karakter, dimulai dengan $ 5 $. Jika string garam "putaran = <N> $" dimulai, nilai digital dari N kali hash yang digunakan untuk menunjukkan loop dijalankan, yang mirip dengan biaya parameter Blowfish. Nomor default siklus adalah 5000, nilai minimum adalah 1000, maksimum adalah 999.999.999. N adalah setiap nilai di luar kisaran ini akan dikonversi ke nilai batas terdekat.
- [CRYPT_SHA_512] - enkripsi SHA-512 memiliki garam 16 karakter, dimulai dengan $ 6 $. Jika string garam "putaran = <N> $" dimulai, nilai digital dari N kali hash yang digunakan untuk menunjukkan loop dijalankan, yang mirip dengan biaya parameter Blowfish. Nomor default siklus adalah 5000, nilai minimum adalah 1000, maksimum adalah 999.999.999. N adalah setiap nilai di luar kisaran ini akan dikonversi ke nilai batas terdekat.
Pada fungsi ini mendukung sistem multi algoritma, jika didukung di atas konstan diatur ke "1", jika sudah diatur untuk "0."
Catatan: Tidak ada fungsi dekripsi yang sesuai.crypt () fungsi menggunakan algoritma satu arah.
tatabahasa
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
rincian teknis
Pengembalian: | Pengembalian dienkripsi string, jika gagal untuk kembali kurang dari 13 karakter dan jaminan string berbeda dari garam. |
---|---|
Versi PHP: | 4+ |
Update log: | Dalam PHP 5.3.7, menambahkan $ 2x $ dan $ 2thn mode $ Blowfish untuk menangani potensi serangan yang tinggi. Dalam PHP 5.3.2, menambahkan konstan SHA-256 dan SHA-512. Sejak PHP 5.3.2 dan seterusnya, Blowfish dalam loop tidak valid akan kembali "kegagalan" string ( "* 0" atau "* 1"), daripada kembali ke DES. Mulai dari PHP 5.3.0, PHP dilengkapi dengan enkripsi MD5 untuk mencapai, mencapai standar DES, Blowfish dan diperpanjang algoritma DES untuk mencapai. Jika sistem tidak mendukung algoritma ini akan menggunakan algoritma PHP sendiri. |
contoh
contoh 1
Dalam contoh ini, kita akan menguji algoritma yang berbeda:
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."n<br>";
}
else
{
echo "Standard DES not supported.n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."n<br>";
}
else
{
echo "Extended DES not supported.n<br>";
}
// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."n<br>";
}
else
{
echo "MD5 not supported.n<br>";
}
// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."n<br>";
}
else
{
echo "Blowfish DES not supported.n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."n<br>"; }
else
{
echo "SHA-256 not supported.n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>
Kode di atas output berikut (tergantung pada sistem operasi):
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.
PHP String Reference