Cập nhật ngày 27/12/2021

Trong PHP, muốn sử dụng mã hoá Bcrypt ta sẽ dùng hàm password_hash(). Hàm này thường dùng để mã hoá mật khẩu.

Ngoài mã hoá Bcrypt hàm này còn hỗ trợ mã hoá Argon2i và Argon2id.

password_hash ( string $password , int $algo [, array $options ] ) : string

Trong đó:

  • $password: chuỗi cần mã hoá
  • $algo: Phương thức mã hoá (mặc định là Bcrypt). (xem thêm)
  • $options: mảng tùy chọn (xem thêm)

Kết quả:

Trả về chuỗi mã hoá hoặc FALSE nếu thất bại.

Ví dụ:

<?php

$options = [
    'cost' => 12,
];

echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);

So sánh 2 chuỗi đã mã hoá?

Đồi khi ta buồn ta chả biết làm gì rồi ngồi vu vơ nghĩ về Bcrypt, khi mà cùng 1 chuỗi nó mã hoá ra nhiều chuỗi mới khác nhau thì làm sao so sánh?

Nhưng không sao, PHP đã cung cấp cho ta 1 hàm giúp làm việc này đó là password_verify().

password_verify ( string $password , string $hash ) : bool

Trong đó:

  • $password: chuỗi gốc cần so sánh
  • $hash: chuỗi đã má hoá

Kết quả:

TRUE nếu khớp, FALSE nếu không khớp.

Ví dụ:

<?php

$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}