Hướng dẫn PHP

TRANG CHỦ PHP Giới thiệu PHP Cài đặt PHP Cú pháp PHP Nhận xét PHP Các biến PHP PHP Echo / Print Các kiểu dữ liệu PHP Chuỗi PHP Số PHP Toán PHP Hằng số PHP Toán tử PHP PHP If ... Else ... Elseif Chuyển đổi PHP Vòng lặp PHP Các hàm PHP Mảng PHP PHP Superglobals PHP RegEx

Biểu mẫu PHP

Xử lý biểu mẫu PHP Xác thực biểu mẫu PHP Yêu cầu biểu mẫu PHP URL biểu mẫu PHP / E-mail Hoàn thành biểu mẫu PHP

PHP nâng cao

Ngày và giờ trong PHP Bao gồm PHP Xử lý tệp PHP Mở / Đọc tệp PHP Tạo / ghi tệp PHP Tải lên tệp PHP Cookie PHP Phiên PHP Bộ lọc PHP Bộ lọc PHP nâng cao Các chức năng gọi lại trong PHP PHP JSON Ngoại lệ PHP

PHP OOP

PHP OOP là gì Các lớp / đối tượng PHP Trình tạo PHP PHP Destructor Công cụ sửa đổi quyền truy cập PHP Kế thừa PHP Hằng số PHP Các lớp trừu tượng trong PHP Giao diện PHP Đặc điểm PHP Phương thức tĩnh trong PHP Thuộc tính tĩnh của PHP Không gian tên PHP Lặp lại PHP

Cơ sở dữ liệu MySQL

Cơ sở dữ liệu MySQL MySQL Connect MySQL Tạo cơ sở dữ liệu MySQL Tạo bảng MySQL Chèn dữ liệu MySQL Nhận ID cuối cùng MySQL Chèn Nhiều MySQL được chuẩn bị Dữ liệu chọn MySQL MySQL ở đâu MySQL Đặt hàng bởi MySQL Xóa dữ liệu Dữ liệu cập nhật MySQL Dữ liệu giới hạn MySQL

PHP XML

Trình phân tích cú pháp XML PHP Trình phân tích cú pháp PHP SimpleXML PHP SimpleXML - Nhận PHP XML Expat DOM XML PHP

PHP - AJAX

Giới thiệu về AJAX AJAX PHP Cơ sở dữ liệu AJAX AJAX XML Tìm kiếm trực tiếp AJAX Cuộc thăm dò ý kiến ​​của AJAX

Ví dụ về PHP

Ví dụ về PHP Trình biên dịch PHP PHP Quiz Bài tập PHP Chứng chỉ PHP

Tham chiếu PHP

Tổng quan về PHP Mảng PHP Lịch PHP Ngày PHP Thư mục PHP Lỗi PHP Ngoại lệ PHP Hệ thống tập tin PHP Bộ lọc PHP FTP PHP PHP JSON Từ khóa PHP PHP Libxml Thư PHP Toán PHP PHP Misc PHP MySQLi Mạng PHP Kiểm soát đầu ra PHP PHP RegEx PHP SimpleXML Luồng PHP Chuỗi PHP Xử lý biến PHP Trình phân tích cú pháp XML PHP PHP Zip Múi giờ PHP

Hàm crypt () trong PHP


❮ Tham chiếu chuỗi PHP

Định nghĩa và Cách sử dụng

Hàm crypt () trả về một chuỗi được băm bằng cách sử dụng các thuật toán DES, Blowfish hoặc MD5.

Chức năng này hoạt động khác nhau trên các hệ điều hành khác nhau. PHP kiểm tra những thuật toán nào có sẵn và những thuật toán nào sẽ sử dụng khi nó được cài đặt.

Tham số muối là tùy chọn. Tuy nhiên, crypt () tạo ra một mật khẩu yếu mà không có muối. Đảm bảo chỉ định một loại muối đủ mạnh để bảo mật tốt hơn.

Có một số hằng số được sử dụng cùng với hàm crypt (). Giá trị của các hằng số này được đặt bởi PHP khi nó được cài đặt.

Hằng số:

  • [CRYPT_STD_DES] - Hàm băm dựa trên DES tiêu chuẩn với hai muối ký tự từ bảng chữ cái "./0-9A-Za-z". Sử dụng các ký tự không hợp lệ trong muối sẽ khiến chức năng này bị lỗi.
  • [CRYPT_EXT_DES] - Hàm băm dựa trên DES mở rộng với muối chín ký tự bao gồm dấu gạch dưới, theo sau là 4 byte số lần lặp và 4 byte muối. Chúng được mã hóa dưới dạng ký tự có thể in được, 6 bit cho mỗi ký tự, ký tự ít quan trọng nhất trước tiên. Các giá trị từ 0 đến 63 được mã hóa thành "./0-9A-Za-z". Sử dụng các ký tự không hợp lệ trong muối sẽ khiến hàm bị lỗi.
  • [CRYPT_MD5] - Hàm băm MD5 với muối 12 ký tự bắt đầu bằng $ 1 $
  • [CRYPT_BLOWFISH] - Blowfish băm với một muối bắt đầu bằng $ 2a $, $ 2x $ hoặc $ 2y $, tham số giá hai chữ số "$" và 22 ký tự từ bảng chữ cái "./0-9A-Za-z" . Việc sử dụng các ký tự bên ngoài bảng chữ cái sẽ khiến hàm này trả về một chuỗi có độ dài bằng không. Tham số "$" là logarit cơ số 2 của số lần lặp lại cho thuật toán băm cơ bản dựa trên Blowfish và phải nằm trong phạm vi 04-31. Các giá trị nằm ngoài phạm vi này sẽ làm cho chức năng bị lỗi.
  • [CRYPT_SHA_256] - Hàm băm SHA-256 với muối 16 ký tự bắt đầu với $ 5 $. Nếu chuỗi muối bắt đầu bằng "round = <N> $", giá trị số của N được sử dụng để cho biết số lần vòng lặp băm sẽ được thực thi, giống như tham số chi phí trên Blowfish. Số lượng vòng quay mặc định là 5000, tối thiểu là 1000 và tối đa là 999.999.999. Bất kỳ lựa chọn nào của N nằm ngoài phạm vi này sẽ bị cắt bớt đến giới hạn gần nhất.
  • [CRYPT_SHA_512] - Hàm băm SHA-512 với muối 16 ký tự bắt đầu với $ 6 $. Nếu chuỗi muối bắt đầu bằng "round = <N> $", giá trị số của N được sử dụng để cho biết số lần vòng lặp băm sẽ được thực thi, giống như tham số chi phí trên Blowfish. Số lượng vòng quay mặc định là 5000, tối thiểu là 1000 và tối đa là 999.999.999. Bất kỳ lựa chọn nào của N nằm ngoài phạm vi này sẽ bị cắt bớt đến giới hạn gần nhất.

Trên các hệ thống mà hàm này hỗ trợ nhiều thuật toán, các hằng số ở trên được đặt thành "1" nếu được hỗ trợ và "0" nếu không.

Lưu ý: Không có chức năng giải mã. Hàm crypt () sử dụng thuật toán một chiều.


Cú pháp

crypt(str,salt)

Giá trị tham số

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


Chi tiết kỹ thuật

Giá trị trả lại: Trả về chuỗi được mã hóa hoặc chuỗi ngắn hơn 13 ký tự và được đảm bảo khác với muối khi bị lỗi
Phiên bản PHP: 4+
Changelog: PHP 5.6.0 - Hiển thị cảnh báo bảo mật E_NOTICE nếu bỏ qua muối .
PHP 5.3.7 - Đã thêm chế độ Blowfish $ 2x $ và $ 2y $.
PHP 5.3.2 - Đã thêm SHA-256 và SHA-512. Đã sửa hành vi Blowfish trên các vòng không hợp lệ trả về chuỗi "fail" ("* 0" hoặc "* 1"), thay vì quay trở lại DES.
PHP 5.3.0 - PHP hiện có triển khai riêng của nó cho MD5 crypt, Standard DES, Extended DES và các thuật toán Blowfish và sẽ sử dụng nó nếu hệ thống thiếu hỗ trợ cho một hoặc nhiều thuật toán.

Các ví dụ khác

Thí dụ

Trong ví dụ này, chúng tôi sẽ kiểm tra các thuật toán khác nhau:

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

Đầu ra của đoạn mã trên có thể là (tùy thuộc vào hệ điều hành):

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.


❮ Tham chiếu chuỗi PHP