บทช่วยสอนPHP

PHP HOME แนะนำ PHP การติดตั้ง PHP PHP ไวยากรณ์ ความคิดเห็น PHP ตัวแปร PHP PHP Echo / พิมพ์ ประเภทข้อมูล PHP PHP Strings หมายเลข PHP PHP คณิตศาสตร์ ค่าคงที่ PHP ตัวดำเนินการ PHP PHP If...Else...Elseif PHP Switch PHP Loops ฟังก์ชัน PHP PHP Arrays PHP Superglobals PHP RegEx

แบบฟอร์มPHP

การจัดการแบบฟอร์ม PHP การตรวจสอบแบบฟอร์ม PHP ต้องใช้แบบฟอร์ม PHP URL แบบฟอร์ม PHP/อีเมล แบบฟอร์ม PHP เสร็จสมบูรณ์

PHPขั้นสูง

วันที่และเวลา PHP รวม PHP การจัดการไฟล์ PHP ไฟล์ PHP เปิด/อ่าน สร้าง/เขียนไฟล์ PHP อัพโหลดไฟล์ PHP คุกกี้ PHP PHP Sessions ตัวกรอง PHP ตัวกรอง PHP ขั้นสูง ฟังก์ชันเรียกกลับของ PHP PHP JSON ข้อยกเว้น PHP

PHP OOP

PHP OOP คืออะไร คลาส PHP/วัตถุ ตัวสร้าง PHP PHP Destructor PHP Access Modifiers PHP Inheritance ค่าคงที่ PHP PHP Abstract Classes อินเทอร์เฟซ PHP PHP ลักษณะ PHP Static Methods PHP คุณสมบัติคงที่ PHP เนมสเปซ PHP Iterables

ฐานข้อมูลMySQL

ฐานข้อมูล MySQL MySQL Connect MySQL สร้าง DB MySQL สร้างตาราง MySQL แทรกข้อมูล MySQL รับ ID ล่าสุด MySQL แทรกหลายรายการ MySQL ที่เตรียมไว้ MySQL Select Data MySQL Where MySQL สั่งซื้อโดย MySQL ลบข้อมูล ข้อมูลอัพเดต MySQL MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - รับ PHP XML Expat PHP XML DOM

PHP - AJAX

บทนำ AJAX AJAX PHP ฐานข้อมูล AJAX AJAX XML AJAX ค้นหาสด AJAX โพล

ตัวอย่างPHP

ตัวอย่าง PHP PHP คอมไพเลอร์ แบบทดสอบ PHP แบบฝึกหัด PHP ใบรับรอง PHP

ข้อมูลอ้างอิงPHP

ภาพรวม PHP PHP Array ปฏิทิน PHP PHP วันที่ ไดเรกทอรี PHP ข้อผิดพลาด PHP ข้อยกเว้น PHP ระบบไฟล์ PHP ตัวกรอง PHP PHP FTP PHP JSON คีย์เวิร์ด PHP PHP Libxml PHP Mail PHP คณิตศาสตร์ PHP เบ็ดเตล็ด PHP MySQLi เครือข่าย PHP การควบคุมเอาต์พุต PHP PHP RegEx PHP SimpleXML PHP Stream PHP String
addcslashes() เครื่องหมายทับ () bin2hex() สับ() chr() chunk_split() Convert_cyr_string() convert_uudecode() Convert_uuencode() count_chars() crc32() ห้องใต้ดิน() เสียงสะท้อน() ระเบิด() พิมพ์ () get_html_translation_table() ฮีบรู () ภาษาฮีบรูฟ () hex2bin() html_entity_decode() htmlentities() htmlspecialchars_decode() htmlspecialchars() ระเบิด() เข้าร่วม() lcfirst() เลเวนชไทน์() localeconv() ลทริม () md5() md5_file() เมตาโฟน() money_format() nl_langinfo () nl2br() number_format() คำ() parse_str() พิมพ์() พิมพ์f() quoted_printable_decode() quoted_printable_encode() ข้อมูลอ้างอิง () อาร์ทริม() setlocale() sha1() sha1_file() คล้ายกัน_text() ซาวด์เอ็กซ์() sprintf() sscanf() str_getcsv () str_ireplace () str_pad() str_repeat() str_replace() str_rot13 () str_shuffle() str_split () str_word_count() strcasecmp() strchr() strcmp() strcoll() strcspn() strip_tags() แถบสแลช() แถบสแลช() การ์ตูน () แถบ () strlen() strnatcasecmp() strnatcmp() strncasecmp() strncmp() strpbrk () สตรอปส์() strchr() strrev () สตริพอส() สตริพอส() strspn () strstr() strtok() strtolower() สตรอปเปอร์() strtr() ย่อย () substr_compare() substr_count() substr_replace() ตัดแต่ง() ucfirst() ucwords() vfprintf() vprintf() vsprintf() ตัดคำ()
การจัดการตัวแปร PHP PHP XML Parser PHP Zip เขตเวลา PHP

PHP crypt()ฟังก์ชั่น


❮ การอ้างอิงสตริง PHP

ความหมายและการใช้งาน

ฟังก์ชัน crypt() ส่งคืนสตริงที่แฮชโดยใช้อัลกอริทึม DES, Blowfish หรือ MD5

ฟังก์ชันนี้ทำงานแตกต่างกันในระบบปฏิบัติการต่างๆ PHP ตรวจสอบอัลกอริทึมที่มีอยู่และอัลกอริทึมที่จะใช้เมื่อติดตั้ง

พารามิเตอร์เกลือเป็นทางเลือก อย่างไรก็ตาม crypt() สร้างรหัสผ่านที่ไม่รัดกุมโดยไม่มีเกลือ ตรวจสอบให้แน่ใจว่าได้ระบุเกลือที่แรงเพียงพอเพื่อความปลอดภัยที่ดีขึ้น

มีบางค่าคงที่ที่ใช้ร่วมกับฟังก์ชัน crypt() ค่าของค่าคงที่เหล่านี้ถูกกำหนดโดย PHP เมื่อทำการติดตั้ง

ค่าคงที่:

  • [CRYPT_STD_DES] - แฮชแบบมาตรฐาน DES พร้อมเกลือสองอักขระจากตัวอักษร "./0-9A-Za-z" การใช้อักขระที่ไม่ถูกต้องในเกลือจะทำให้ฟังก์ชันนี้ล้มเหลว
  • [CRYPT_EXT_DES] - แฮชแบบขยาย DES ที่มีเกลือเก้าอักขระประกอบด้วยขีดล่างตามด้วยจำนวนการวนซ้ำ 4 ไบต์และเกลือ 4 ไบต์ สิ่งเหล่านี้ถูกเข้ารหัสเป็นอักขระที่สามารถพิมพ์ได้ 6 บิตต่ออักขระ อักขระที่มีนัยสำคัญน้อยที่สุดก่อน ค่า 0 ถึง 63 ถูกเข้ารหัสเป็น "./0-9A-Za-z" การใช้อักขระที่ไม่ถูกต้องในเกลือจะทำให้ฟังก์ชันล้มเหลว
  • [CRYPT_MD5] - แฮช MD5 ด้วยเกลือ 12 อักขระที่เริ่มต้นด้วย $1$
  • [CRYPT_BLOWFISH] - ปักเป้าปลาปักเป้าด้วยเกลือที่เริ่มต้นด้วย $2a$, $2x$ หรือ $2y$ พารามิเตอร์ต้นทุนสองหลัก "$" และ 22 อักขระจากตัวอักษร "./0-9A-Za-z" . การใช้อักขระนอกตัวอักษรจะทำให้ฟังก์ชันนี้ส่งคืนสตริงที่มีความยาวเป็นศูนย์ พารามิเตอร์ "$" คือลอการิทึมฐาน 2 ของการนับซ้ำสำหรับอัลกอริธึมการแฮชแบบ Blowfish-bashing และต้องอยู่ในช่วง 04-31 ค่าที่อยู่นอกช่วงนี้จะทำให้ฟังก์ชันล้มเหลว
  • [CRYPT_SHA_256] - แฮช SHA-256 พร้อมเกลือ 16 อักขระเริ่มต้นที่ $5$ หากสตริงเกลือขึ้นต้นด้วย "rounds=<N>$" ค่าตัวเลขของ N จะถูกใช้เพื่อระบุจำนวนครั้งที่ควรทำ hashing loop เหมือนกับพารามิเตอร์ cost บน Blowfish จำนวนรอบเริ่มต้นคือ 5000 มีขั้นต่ำ 1,000 และสูงสุด 999,999,999 การเลือก N ใดๆ นอกช่วงนี้จะถูกตัดทอนให้ใกล้ที่สุด
  • [CRYPT_SHA_512] - แฮช SHA-512 พร้อมเกลือ 16 อักขระเริ่มต้นที่ $6$ หากสตริงเกลือขึ้นต้นด้วย "rounds=<N>$" ค่าตัวเลขของ N จะถูกใช้เพื่อระบุจำนวนครั้งที่ควรทำ hashing loop เหมือนกับพารามิเตอร์ cost บน Blowfish จำนวนรอบเริ่มต้นคือ 5000 มีขั้นต่ำ 1,000 และสูงสุด 999,999,999 การเลือก N ใดๆ นอกช่วงนี้จะถูกตัดทอนให้ใกล้ที่สุด

บนระบบที่ฟังก์ชันนี้สนับสนุนอัลกอริธึมหลายแบบ ค่าคงที่ด้านบนจะถูกตั้งค่าเป็น "1" หากได้รับการสนับสนุน และ "0" ไม่เช่นนั้น

หมายเหตุ:ไม่มีฟังก์ชันถอดรหัส ฟังก์ชัน crypt() ใช้อัลกอริธึมทางเดียว


ไวยากรณ์

crypt(str,salt)

ค่าพารามิเตอร์

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


รายละเอียดทางเทคนิค

คืนมูลค่า: ส่งกลับสตริงที่เข้ารหัสหรือสตริงที่สั้นกว่า 13 อักขระและรับประกันว่าจะแตกต่างจากเกลือเมื่อล้มเหลว
รุ่น PHP: 4+
บันทึกการเปลี่ยนแปลง: PHP 5.6.0 - แสดงคำเตือนความปลอดภัย E_NOTICE หากละเว้นเกลือ
PHP 5.3.7 - เพิ่มโหมดปลาปักเป้า $2x$ และ $2y$
PHP 5.3.2 - เพิ่ม SHA-256 และ SHA-512 แก้ไขพฤติกรรมปักเป้าในรอบที่ไม่ถูกต้องส่งคืนสตริง "ความล้มเหลว" ("*0" หรือ "*1") แทนที่จะถอยกลับไปที่ DES
PHP 5.3.0 - ตอนนี้ PHP มีการใช้งานของตัวเองสำหรับ MD5 crypt, Standard DES, Extended DES และอัลกอริธึม Blowfish และจะใช้สิ่งนั้นหากระบบไม่รองรับอัลกอริธึมตั้งแต่หนึ่งตัวขึ้นไป

ตัวอย่างเพิ่มเติม

ตัวอย่าง

ในตัวอย่างนี้ เราจะทดสอบอัลกอริทึมต่างๆ:

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

ผลลัพธ์ของโค้ดด้านบนอาจเป็นได้ (ขึ้นอยู่กับระบบปฏิบัติการ):

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