Bcrypt

Thuật toán Bcrypt phát sinh mã được sử dụng rộng rãi cho các chức năng liên quan đến bảo mật khi lưu trữ password của người dùng. Các thuật toán cũ MD5, SHA đã không còn được khuyên dùng (Đọc để biết tại sao).

Mức độ an toàn của bcrypt liên quan đến tốc độ của thuật toán. Bcrypt là rất chậm, thậm chí đến hàng giây để sinh ra một mã hash. Điều này có nghĩa là kiểu tấn công brute force khó mà thi hành vì cần quá nhiều thời gian.

Sử dụng Bcrypt để lưu giữ Password

use Zend\Crypt\Password\Bcrypt;

$bcrypt = new Bcrypt();

$bcrypt->setCost(14); //4 - 34 - độ dài hash
$securePass = $bcrypt->create('user password');

Sử dụng Bcrypt để kiểm tra Password

use Zend\Crypt\Password\Bcrypt;

$bcrypt = new Bcrypt();
$securePass = 'the stored bcrypt value';//mã hash lưu trữ do Bcrypt sinh ra
$password = 'the password to check';

if ($bcrypt->verify($password, $securePass)) {
    echo "The password is correct! \n";
} else {
    echo "The password is NOT correct.\n";
}