tutorial pengembangan web terbaru
 

PHP crypt() Function


<PHP String Reference

Definisi dan Penggunaan

The crypt() mengembalikan fungsi string hash menggunakan algoritma DES, Blowfish, atau MD5.

Fungsi ini berperilaku berbeda pada sistem operasi yang berbeda. PHP memeriksa apa algoritma yang tersedia dan apa algoritma untuk digunakan ketika diinstal.

Parameter garam adalah opsional. Namun, crypt() menciptakan password yang lemah tanpa garam. Pastikan untuk menentukan garam cukup kuat untuk keamanan yang lebih baik.

Ada beberapa konstanta yang digunakan bersama-sama dengan crypt() fungsi. Nilai konstanta ini ditetapkan oleh PHP ketika diinstal.

konstanta:

  • [CRYPT_STD_DES] - Standard hash DES berbasis dengan dua garam karakter dari alfabet "./0-9A-Za-z" . Menggunakan karakter yang tidak valid dalam garam akan menyebabkan fungsi ini gagal.
  • [CRYPT_EXT_DES] - Diperpanjang hash berbasis DES dengan garam sembilan karakter yang terdiri dari garis bawah diikuti oleh 4 byte count iterasi dan 4 byte garam. Ini dikodekan sebagai karakter yang dapat dicetak, 6 bit per karakter, karakter paling signifikan pertama. Nilai-nilai 0-63 dikodekan sebagai "./0-9A-Za-z" . Menggunakan karakter yang tidak valid dalam garam akan menyebabkan fungsi gagal.
  • [CRYPT_MD5] - MD5 hashing dengan garam 12 karakter diawali $ 1 $
  • [CRYPT_BLOWFISH] - hashing Blowfish dengan garam dimulai dengan $ 2a $, $ 2x $, atau $ 2y $, dua parameter biaya digit "$" , dan 22 karakter dari alfabet "./0-9A-Za-z" . Menggunakan karakter luar abjad akan menyebabkan fungsi ini untuk kembali nol-panjang string. The "$" parameter adalah basis-2 logaritma dari jumlah iterasi untuk mendasari Blowfish-dihancurkan algorithmeter hashing dan harus dalam kisaran 04-31. Nilai-nilai di luar kisaran ini akan menyebabkan fungsi gagal.
  • [CRYPT_SHA_256] - SHA-256 hash dengan garam 16 karakter dimulai dengan $ 5 $. Jika string garam dimulai dengan "rounds=<N>$" , nilai numerik dari N digunakan untuk menunjukkan berapa kali loop hashing harus dieksekusi, seperti biaya parameter pada Blowfish. Jumlah default putaran 5000, ada minimal 1000 dan maksimal 999.999.999. Setiap pemilihan N di luar kisaran ini akan dipotong ke batas terdekat.
  • [CRYPT_SHA_512] - SHA-512 hash dengan garam 16 karakter dimulai dengan $ 6 $. Jika string garam dimulai dengan "rounds=<N>$" , nilai numerik dari N digunakan untuk menunjukkan berapa kali loop hashing harus dieksekusi, seperti biaya parameter pada Blowfish. Jumlah default putaran 5000, ada minimal 1000 dan maksimal 999.999.999. Setiap pemilihan N di luar kisaran ini akan dipotong ke batas terdekat.

Pada sistem di mana fungsi ini mendukung beberapa algoritma, konstanta di atas ditetapkan untuk "1" jika didukung dan "0" jika tidak.

Note: Tidak ada fungsi mendekripsi. The crypt() fungsi menggunakan algoritma satu arah.


Sintaksis

crypt( str,salt )

Parameter Deskripsi
str Wajib. Menentukan string yang akan diacak
salt Pilihan. Sebuah string garam untuk mendasarkan hashing pada

Rincian teknis

Kembali Nilai: Mengembalikan string disandikan atau string yang lebih pendek dari 13 karakter dan dijamin berbeda dari garam pada kegagalan
PHP Versi: 4+
changelog: $ 2x $ dan $ 2thn mode $ Blowfish ditambahkan pada PHP 5.3.7 untuk menghadapi serangan tinggi-bit potensial.

Konstanta SHA-256 dan SHA-512 ditambahkan pada PHP 5.3.2.

Pada PHP 5.3.2, perilaku Blowfish pada putaran valid mengembalikan "failure" String ("*0" or "*1") , bukannya jatuh kembali ke DES.

Pada PHP 5.3.0, PHP berisi implementasi sendiri untuk crypt MD5, Standard DES, Extended DES dan algoritma Blowfish dan akan menggunakan bahwa jika sistem tidak memiliki dukungan untuk satu atau lebih dari algoritma.

Contoh

contoh 1

Dalam contoh ini kita akan menguji algoritma yang berbeda:

<?php
// 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.";
}
?>

Output dari kode di atas bisa (depending on the operating system) :

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.


<PHP String Reference