crypt()

PHP crypt() funksiyasi


❮ PHP string funksiyalari ma’lumotnomasi
ULASHISH

Ta’rif va qo‘llanilishi

crypt() funksiyasi DES, Blowfish yoki MD5 algoritmlari yordamida xeshlangan stringni qaytaradi.

Bu funksiya turli operatsion tizimlarda turlicha ishlaydi. PHP o‘rnatilayotganda qaysi algoritmlar mavjudligini va qaysi algoritmlardan foydalanish kerakligini tekshiradi.

salt parametri ixtiyoriy. Biroq salt bo‘lmasa, crypt() zaif parol yaratadi. Yaxshiroq xavfsizlik uchun yetarlicha kuchli salt ko‘rsatganingizga ishonch hosil qiling.

crypt() funksiyasi bilan birga ishlatiladigan bir nechta konstanta mavjud. Bu konstantalarning qiymati PHP o‘rnatilganda PHP tomonidan o‘rnatiladi.

Konstantalar:

  • [CRYPT_STD_DES] - "./0-9A-Za-z" alifbosidagi ikki belgili salt bilan standart DES asosidagi xesh. Saltda yaroqsiz belgilardan foydalanish bu funksiyaning muvaffaqiyatsiz tugashiga olib keladi.
  • [CRYPT_EXT_DES] - To‘qqiz belgili salt bilan kengaytirilgan DES asosidagi xesh; salt pastki chiziq (underscore) va undan keyin keluvchi 4 bayt iteratsiyalar soni hamda 4 bayt saltdan iborat. Ular chop etiladigan belgilar sifatida kodlanadi: har bir belgiga 6 bit, eng kichik ahamiyatli belgi birinchi keladi. 0 dan 63 gacha bo‘lgan qiymatlar "./0-9A-Za-z" sifatida kodlanadi. Saltda yaroqsiz belgilardan foydalanish funksiyaning muvaffaqiyatsiz tugashiga olib keladi.
  • [CRYPT_MD5] - $1$ bilan boshlanadigan 12 belgili salt bilan MD5 xeshlash
  • [CRYPT_BLOWFISH] - $2a$, $2x$ yoki $2y$ bilan boshlanadigan salt, ikki xonali "$" cost parametri va "./0-9A-Za-z" alifbosidagi 22 ta belgi bilan Blowfish xeshlash. Alifbodan tashqaridagi belgilardan foydalanish bu funksiyaning nol uzunlikdagi string qaytarishiga sabab bo‘ladi. "$" parametri asosdagi Blowfish xeshlash algoritmi uchun iteratsiyalar sonining 2 asosli logarifmi bo‘lib, 04-31 oralig‘ida bo‘lishi kerak. Bu oraliqdan tashqaridagi qiymatlar funksiyaning muvaffaqiyatsiz tugashiga olib keladi.
  • [CRYPT_SHA_256] - $5$ bilan boshlanadigan 16 belgili salt bilan SHA-256 xesh. Agar salt stringi "rounds=<N>$" bilan boshlansa, N ning son qiymati xeshlash sikli necha marta bajarilishini ko‘rsatish uchun ishlatiladi, bu Blowfish’dagi cost parametriga o‘xshaydi. Standart raundlar soni 5000, minimal qiymat 1000, maksimal qiymat 999,999,999. Bu oraliqdan tashqaridagi har qanday N qiymati eng yaqin chegaragacha qisqartiriladi.
  • [CRYPT_SHA_512] - $6$ bilan boshlanadigan 16 belgili salt bilan SHA-512 xesh. Agar salt stringi "rounds=<N>$" bilan boshlansa, N ning son qiymati xeshlash sikli necha marta bajarilishini ko‘rsatish uchun ishlatiladi, bu Blowfish’dagi cost parametriga o‘xshaydi. Standart raundlar soni 5000, minimal qiymat 1000, maksimal qiymat 999,999,999. Bu oraliqdan tashqaridagi har qanday N qiymati eng yaqin chegaragacha qisqartiriladi.

Bu funksiya bir nechta algoritmni qo‘llab-quvvatlaydigan tizimlarda yuqoridagi konstantalar qo‘llab-quvvatlansa "1" ga, aks holda "0" ga o‘rnatiladi.

Eslatma: Deshifrlash funksiyasi mavjud emas. crypt() funksiyasi bir tomonlama algoritmdan foydalanadi.


Sintaksis

crypt(str,salt)

Parametr qiymatlari

Parametr Tavsif
str Majburiy. Xeshlanadigan stringni belgilaydi
salt Ixtiyoriy. Xeshlash asoslanadigan salt stringi


Texnik tafsilotlar

Qaytariladigan qiymat: Kodlangan stringni yoki, muvaffaqiyatsiz bo‘lsa, 13 belgidan qisqa va salt’dan farq qilishi kafolatlangan stringni qaytaradi
PHP versiyasi: 4+
O‘zgarishlar tarixi: PHP 8.0 - salt parametri endi ixtiyoriy emas

Ko‘proq misollar

Misol

Bu misolda turli algoritmlarni sinab ko‘ramiz:

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

Yuqoridagi kodning natijasi quyidagicha bo‘lishi mumkin (operatsion tizimga bog‘liq):

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 funksiyalari ma’lumotnomasi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!