crypt

(PHP 4, PHP 5, PHP 7)

cryptTek yönlü dizge şifrelemesi yapar

Açıklama

crypt ( string $dizge [, string $tuz ] ) : string

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.

Değiştirgeler

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.

Dönen Değerler

Şifrelenmiş dizge.

Sürüm Bilgisi

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.

Örnekler

Ö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

Notlar

Bilginize: crypt() tek yönlü algoritma kullandığından tekrar özgün dizgeyi elde etmenizi sağlayacak bir işlev yoktur.

Ayrıca Bakınız