(PHP 4, PHP 5, PHP 7)
crypt — Tek yönlü dizge şifrelemesi yapar
$dizge
[, string $tuz
] )
crypt() işlevi standart Unix DES
şifreleme algoritmasını veya sistemdeki uygun algoritmalardan birini
kullanarak dizge
dizgesinin şifrelenmiş sürümünü
döndürür.
Bazı işletim sistemleri birden fazla şifreleme türü destekler. Çoğunlukla
da standart DES şifrelemesinin yerini MD5 şifreleme algoritması alır.
Şifreleme türü tuz
değiştirgesiyle tetiklenir. Tuz
kabul edecek şifreleme türlerini ve işlevin yeteneklerini PHP kurulum
sırasında saptar. tuz
belirtilmemişse ve sistemin
öntanımlı şifreleme türü MD5 ise rasgele bir MD5 uyumlu bir tuz üretilir;
sistemin öntanımlı şifreleme türü MD5 değilse PHP öntanımlı olarak iki
karakterlik tuz üretir. PHP, CRYPT_SALT_LENGTH
sabitinde tuz uzunluğunu tanımlayarak, sistemde iki karakterlik mi yoksa
daha uzun bir tuz mu (en fazla 20) kullanıldığını belirtir.
Standart DES şifrelemesinde crypt() işlevi tuz olarak çıktının ilk iki karakterini döndürür. Ayrıca, dizgenin sadece ilk sekiz karakterini kullanır, bu nedenle ilk sekiz karakteri aynı olan sekiz karakterden daha uzun dizgeler için tuz aynı olduğu sürece hep aynı sonucu üretir.
İşlevin çok sayıda şifreleme algoritması ile desteklendiği sistemlerde aşağıdaki sabitler desteklenen şifreleme türüne göre 0 veya 1 değerini alırlar:
CRYPT_STD_DES
- İki karakterlik tuz kullanan
standart DES şifrelemesi.
CRYPT_EXT_DES
- Dokuz karakterlik tuz kullanan
gelişkin DES şifrelemesi.
CRYPT_MD5
- $1$ ile başlayan on iki karakterlik MD5
şifrelemesi.
CRYPT_BLOWFISH
- $2$ veya $2a$ ile başlayan on altı
karakterlik Blowfish şifrelemesi.
Bilginize:
PHP 5.3.0 ve sonrasında, PHP kendi gerçeklenimini içerir ve sistemde desteği bulunmayan algoritmalar için bu gerçeklenimi kullanır.
dizge
Şifrelenecek dizge.
tuz
Şifrelemeye göre değişen isteğe bağlı tuz dizgesi. Belirtilmediği takdirde PHP, işlevin her çağrılışında rasgele bir tane üretir.
Eğer kendi tuzunuzu kullanacaksanız işlevi çağırmadan önce üretmiş olmalısınız. İşlevi tekrar takrar çağırdığınız durumlarda bunun hem görünürde hem de güvenlikte bazı etkileri olur.
Şifrelenmiş dizge.
Sürüm: | Açıklama |
---|---|
5.3.0 | PHP artık MD5, standart DES, gelişkin DES ve Blowfish şifreleme algoritmaları için kendi gerçeklenimini içeriyor ve sistemde bu algoritmalardan bulunmayanların yerine bu algoritmaları kullanıyor. |
Örnek 1 - crypt() örnekleri
<?php
$parola = crypt('parolam'); // Tuzu PHP üretsin
/* Parola karşılaştırmasında, farklı şifreleme algoritmaları ile ilgili
sorunlardan kaçınmak için crypt() sonucunun tamamını tuz olarak işleve
aktarmalısınız. (Yukarıda belirtildiği gibi standart DES parola özetleri
2 karakterlik tuz kullanırken MD5 parola özetleri 12 karakterlik tuz
kullanır.) */
if (crypt($kullanıcı _girdisi, $parola) == $parola) {
echo "Parola doğru!";
}
?>
Örnek 2 - htpasswd ile crypt() kullanımı
<?php
// Parolayı tanmılayalım
$parola = 'parolam';
// Tuzu PHP üretsin ve bize parola özetini versin
$hash = crypt($parola);
?>
Örnek 3 - crypt() işlevinin farklı şifreleme türleri ile kullanımı
<?php
if (CRYPT_STD_DES == 1) {
echo 'Standart DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 'Gelişkin DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf',
'$2a$07$usesomesillystringforsalt$') . "\n";
}
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Standart DES: rl.3StKT.4T8M Gelişkin DES: _J9..rasmBYk8r9AiWNc MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0 Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
Bilginize: crypt() tek yönlü algoritma kullandığından tekrar özgün dizgeyi elde etmenizi sağlayacak bir işlev yoktur.