Biểu diễn thuật toán Hashing bằng ngôn ngữ PHP | Web Thanh Hà

Biểu diễn thuật toán Hashing bằng ngôn ngữ PHP

Trong PHP, bạn biểu diễn hashing chủ yếu bằng các hàm có sẵn như hash() (cho nhiều thuật toán) và password_hash() (chuyên dụng cho mật khẩu),

Trong PHP, bạn biểu diễn hashing chủ yếu bằng các hàm có sẵn như hash() (cho nhiều thuật toán) và password_hash() (chuyên dụng cho mật khẩu), dùng để chuyển đổi dữ liệu đầu vào thành một chuỗi có độ dài cố định (hash value) không thể đảo ngược, giúp bảo mật và kiểm tra tính toàn vẹn dữ liệu, với các ví dụ như hash('sha256', 'dữ liệu') hoặc dùng password_hash('mật khẩu', PASSWORD_DEFAULT). 

1. Hàm hash() (Đa dụng)

Dùng để tạo hash cho nhiều thuật toán khác nhau (md5sha1sha256sha512ripemd160, v.v.). 
  • Cú pháp: hash(string $algo, string $data, bool $raw_output = false): string.
<?php
$data = "Hello world!";

// Tạo hash SHA-256
$sha256_hash = hash('sha256', $data);
echo "SHA-256 Hash: " . $sha256_hash . "\n";

// Tạo hash MD5 (dạng nhị phân)
$md5_raw = hash('md5', $data, true);
echo "MD5 Raw Hash (Binary): " . $md5_raw . "\n";

// Tạo hash SHA-1 (dạng thập lục phân)
$sha1_hash = hash('sha1', $data);
echo "SHA-1 Hash: " . $sha1_hash . "\n";
?>

2. Hàm password_hash() (Chuyên dùng cho mật khẩu)

Thích hợp nhất để băm mật khẩu, sử dụng thuật toán mạnh mẽ như bcrypt và tự động thêm salt (muối) để chống tấn công. 
  • Cú pháp: password_hash(string $password, string|int $algo, array $options = []): string|false.
  • Ví dụ: 
<?php
$password = 'mật_khẩu_bí_mật_của_bạn';

// Băm mật khẩu (sử dụng thuật toán mặc định mạnh nhất)
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
echo "Hashed Password: " . $hashed_password . "\n";

// Kiểm tra mật khẩu nhập vào có khớp không
if (password_verify('mật_khẩu_bí_mật_của_bạn', $hashed_password)) {
echo "Mật khẩu đúng!\n";
} else {
echo "Mật khẩu sai!\n";
}
?>

3. Hàm sha1() và md5() (Cũ, không khuyến khích cho mật khẩu)

Các hàm cũ hơn, vẫn có thể dùng nhưng hash() hoặc password_hash() mạnh hơn cho mật khẩu. 
<?php
echo md5("Dữ liệu") . "\n";
echo sha1("Dữ liệu") . "\n";
?>
Tóm lại, sử dụng hash() cho các dữ liệu nói chung và password_hash() cho mật khẩu là cách biểu diễn hashing hiện đại và an toàn trong PHP.

Thẻ:, ,


0943 863 799