Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Hàm crypt() trong PHP

Giới thiệu

Hàm crypt() băm chuỗi sử dụng các thuật toán: DES, Blowfish, MD5, SHA-256, SHA-512. Hành vi khác nhau tùy hệ điều hành và hằng số có sẵn.

CẢNH BÁO: crypt() phức tạp và dễ sai. KHÔNG KHUYẾN KHÍCH dùng cho mật khẩu mới. Hãy dùng password_hash() (BCRYPT/ARGON2) - tự động xử lý salt, cost, algorithm.

Các hằng số thuật toán (nếu hỗ trợ)

  • CRYPT_STD_DES - DES chuẩn, salt 2 ký tự (./0-9A-Za-z)
  • CRYPT_EXT_DES - DES mở rộng, salt 9 ký tự (_ + 4 byte count + 4 byte salt)
  • CRYPT_MD5 - MD5, salt 12 ký tự bắt đầu $1$
  • CRYPT_BLOWFISH - Blowfish, salt $2a$/$2x$/$2y$ + cost 2 chữ số + 22 ký tự
  • CRYPT_SHA_256 - SHA-256, salt 16 ký tự bắt đầu $5$
  • CRYPT_SHA_512 - SHA-512, salt 16 ký tự bắt đầu $6$

Cú pháp

crypt(string $string, string $salt = ""): string

Tham số

  • string - Chuỗi cần băm (bắt buộc).
  • salt (tùy chọn) - Salt xác định thuật toán và giá trị. Nếu bỏ qua, PHP tự tạo (không khuyến khích).

Giá trị trả về

Trả về chuỗi đã băm (bao gồm salt và algorithm identifier). Trả về chuỗi < 13 ký tự và khác salt nếu thất bại.

Ví dụ

<?php
if (CRYPT_STD_DES == 1) {
    echo "DES supported = " . crypt('demo', 'st') . "\n";
} else {
    echo "DES not supported!";
}
?>

Kết quả (ví dụ):

DES supported = st7zBedJadRn2

Kết quả thực tế phụ thuộc vào hệ thống.