En son web geliştirme öğreticiler
 

PHP crypt() Function


<PHP dize Başvuru

Tanımı ve Kullanımı

crypt() işlevi, DES, Blowfish veya MD5 algoritmaları kullanarak bir karma dize döndürür.

Bu fonksiyon, farklı işletim sistemlerinde farklı davranır. PHP algoritmaları mevcuttur ve yüklü olduğunda neler algoritmaları kullanmak ne denetler.

Tuz parametre isteğe bağlıdır. Ancak crypt() tuzsuz zayıf bir şifre oluşturur. Daha iyi güvenlik için yeterince güçlü bir tuz belirtmek için emin olun.

Ile birlikte kullanılan bazı sabitler vardır crypt() fonksiyonu. o yüklendiğinde bu sabitlerin değeri PHP tarafından belirlenir.

Sabitler:

  • [CRYPT_STD_DES] - Standart alfabesinden iki karakter tuzu ile karma DES "./0-9A-Za-z" . Tuz geçersiz karakterler kullanarak bu işlevi başarısız olmasına neden olacaktır.
  • [CRYPT_EXT_DES] - yineleme sayısı 4 byte ve tuz 4 bayt ardından bir alt oluşan dokuz karakter tuzu ile DES karma genişletildi. Bu ilk yazdırılabilir karakterler, karakter için 6 bit, en az önemli bir karakter olarak kodlanır. 0 ile 63 değerleri olarak kodlanmıştır "./0-9A-Za-z" . Tuz geçersiz karakterler kullanma işlevi başarısız olmasına neden olacaktır.
  • [CRYPT_MD5] - MD5 12 karakter tuzu $ 1 $ ile başlayan karma
  • [CRYPT_BLOWFISH] - tuz, $ 2a $ ile $ 2x $, ya $ 2y $, bir iki haneli maliyet parametrelerini başlayan Blowfish karma "$" alfabeden ve 22 karakter "./0-9A-Za-z" . alfabenin dışında karakterler kullanarak bu işlevi sıfır uzunluklu dize döndürür neden olur. "$" Parametresi altında yatan Blowfish-bashed karma algorithmeter için yineleme sayısı 2 tabanına logaritma ve aralık 04-31 olmalıdır. Bu aralığın dışındaki değerler işlevi başarısız olmasına neden olacaktır.
  • [CRYPT_SHA_256] - 16 karakter tuzu $ 5 $ ile başlayan SHA-256 karma. Tuz dize ile başlıyorsa "rounds=<N>$" , N sayısal değeri çok Blowfish'ten üzerinde maliyet parametresi gibi, karma döngü yürütülmesi gereken kaç kez belirtmek için kullanılır. mermi varsayılan sayısı 5000, 1000 minimum ve 999.999.999 maksimum yoktur. Bu aralığın dışında N herhangi bir seçim, en yakın sınıra kesilecek.
  • [CRYPT_SHA_512] - 16 karakter tuzu $ 6 $ ile başlayan SHA-512 karma. Tuz dize ile başlıyorsa "rounds=<N>$" , N sayısal değeri çok Blowfish'ten üzerinde maliyet parametresi gibi, karma döngü yürütülmesi gereken kaç kez belirtmek için kullanılır. mermi varsayılan sayısı 5000, 1000 minimum ve 999.999.999 maksimum yoktur. Bu aralığın dışında N herhangi bir seçim, en yakın sınıra kesilecek.

Bu fonksiyon birden algoritmalarını destekler sistemlerde, yukarıda sabitleri ayarlanır "1" destekleniyorsa ve "0" aksi.

Note: Hiçbir şifresini işlevi yoktur. crypt() işlevi, bir tek yönlü bir algoritma kullanır.


Sözdizimi

crypt( str,salt )

Parametre Açıklama
str Gereklidir. karma edilecek dize belirtir
salt İsteğe bağlı. Bir tuz dize karma dayandırmaya

Teknik detaylar

Geri dönüş değeri: kodlanmış dize veya daha kısa 13 karakterdir ve başarısızlık üzerine tuz farklı olmasına garantili bir dize döndürür
PHP Sürümü: 4+
Değişiklikler: $ 2x $ ve $ 2y $ Blowfish modları potansiyel yüksek bit saldırıları ile başa çıkmak için PHP 5.3.7 eklendi.

sabitleri SHA-256 ve SHA-512 PHP 5.3.2 eklenmiştir.

PHP 5.3.2 itibariyle geçersiz turlarında Blowfish davranış döner "failure" dizesini ("*0" or "*1") yerine DES geri düşme.

PHP 5.3.0 ve sonrasında, PHP DES Extended MD5 crypt, Standart DES ve Blowfish algoritmaları için kendi uygulamasını içerir ve sistem algoritmaları biri veya birkaçı için destek yoksun eğer kullanacaktır.

Örnek

Örnek 1

Bu örnekte farklı algoritmalar test edecek:

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

Kodunun çıktısı üzerinde olabilir (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 dize Başvuru