Hướng dẫn dùng angular md5 trong PHP

Hàm md5() sẽ mã hóa một chuỗi. Hàm sẽ trả về một chỗi md5 đã mã hóa.

Hướng dẫn dùng angular md5 trong PHP

Hướng dẫn dùng angular md5 trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm md5() được sử dụng khi bạn muốn tạo một chuỗi mã hóa ví dụ như mật khẩu người dùng để lưu vào csdl .vv..

Cú pháp

Cú phápmd5( $str, $raw_output);

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • $str là chuỗi cần mã hóa.
  • $raw_output là tham số, mặc định mang giá trị FALSE, nếu $raw_output mang giá trị TRUE chuỗi trả về sẽ có độ dài là 16 kí tự, nếu $raw_output mang giá trị FALSE chuỗi trả về sẽ có 32 kí tự.

Ví dụ

Code

$str = "Freetuts.net";
$strMd5 = md5($str);

echo strlen($strMd5) ."-".($strMd5);

Kết quả

32-7e84c67e65c8d28c53ac5c33b8e3fdb6

Tham khảo: php.net

Cùng chuyên mục:


  • Định nghĩa
  • Cách sử dụng
  • Kết quả
  • Ví dụ hàm md5()
    • Mã hóa với $row_output = false
    • Mã hóa với $row_output = true

Định nghĩa

Hàm md5() trong php có tác dụng chuyển một chuỗi sang dạng một chuỗi mới đã được mã hóa theo tiêu chuẩn MD5 (32 bít).

Trong PHP không hỗ trợ giải mã một chuỗi đã mã hóa MD5 sang dạng ban đầu.

Cách sử dụng

Cú pháp:

string md5 ( string $str [, bool $raw_output = false ] )

Trong đó:

  • $str là chuỗi bạn muốn mã hóa
  • $raw_outout có giá trị true hoặc false, mặc định là false – Nếu true: hàm sẽ trả về chuỗi nhị phân 16 ký tự đã mã hóa, Nếu false: hàm trả về chuỗi bình thường gồm 32 ký tự đã mã hóa.

Kết quả

Hàm sẽ trả về một chuỗi thập lục phân với chiều dài 32 ký tự (đã mã hóa).

Ví dụ hàm md5()

Mã hóa với $row_output = false

$str = 'thanhtungweb.com';
echo md5($str); // b8faf71bf2161da7f600d3ff38f00609
// hoặc
echo md5($str, false); // b8faf71bf2161da7f600d3ff38f00609

Mã hóa với $row_output = true

$str = 'thanhtungweb.com';
echo md5($str, true); // ƒaquưŒôpÔ¯ez(̃ùŽ

Hàm này khá là đơn giản nên mình không giải thích gì thêm.

Hy vọng bài viết này hữu ích với bạn! Nếu thấy bài viết này hay hãy like và share giúp mình nhé!

Tìm hiểu khi sử dụng các hàm băm tạo dữ liệu lưu trữ password

Khi lưu trữ password vào CSDL thường sẽ sử dụng các hàm băm khác nhau được hỗ trợ bởi hệ CSDL hoặc ngôn ngữ lập trình (như MD5, SHA1 ...) để tạo dữ liệu mã hóa, dữ liệu mã hóa đó được lưu vào CSDL. Ví dụ:

$raw_password = 'abc123';
$crypt = md5($raw_password); //e99a18c428cb38d5f260853678922e03

Ví dụ trên, đã sử dụng hàm băm của PHP là md5 để mã hóa password abc123, kết quả mã hóa là e99a18c428cb38d5f260853678922e03

Bởi vì hàm băm tạo ra các giá trị không thể dịch ngược (không có thuật toán để giải giá trị hash e99a18c428cb38d5f260853678922e03 là chuỗi abc123, chỉ duy nhất một cách là thử), nên có cảm giác sẽ an toàn. Tuy nhiên với các mật khẩu yếu, nó có thể bị dò ra dựa trên giá trị băm của các mật khẩu phổ biến biết trước. Như trường hợp trên khi thấy e99a18c428cb38d5f260853678922e03 thì đoán được password là abc123. Để khắc phục điều này có thể sử dụng đến salt

Sử dụng Salt tăng cường an toàn cho mật khẩu

Để phức tạp hóa mật khẩu lưu trữ, thì các mật khẩu gốc trước khi mã hóa được nối thêm các chuỗi, các chuỗi thêm này gọi là salt

Ví dụ:

$raw_password = 'abc123';

//Sinh ra chuỗi dài 32 ngẫu nhiên, cũng cần lưu chuỗi này vào một cột trong DB
$salt = random_bytes(32);

//Sử dụng thêm một salt cố định
$staticSalt = 'G4334#';


$crypt = md5($staticSalt.$raw_password.$salt);

Giờ mật khẩu lưu trữ ở trên phức tạp hơn rất nhiều. Biết được $crypt đoán ra $raw_password là rất khó, kể cả khi là password yếu. Khó mà xây dựng được một từ điển chứa các mã hóa tương ứng với password.

Có lẽ bạn đã biết nhiều về MD5 và SHA1 dùng để mã hóa chuỗi thông tin đầu vào s1 và cho ra chuỗi thông tin được mã hóa s2. Về lý thuyết, chúng ta không thể dịch ngược được chuỗi s2 để ra dữ liệu ban đầu, mặc dù hiện nay có rất nhiều phương pháp và thuật toán đã làm rất tốt việc này.

Hàm md5() và sha1()

Để mã hóa thông tin đầu vào bằng MD5 hay SHA1, đơn giản bạn chỉ cần dùng hàm md5() và sha1(). Hãy xem ví dụ sau:

' . $password . ' được mã hóa thành: 

'; echo 'MD5: ' . md5($password) . '
'; // mật khẩu đã được mã hóa bằng md5 echo 'SHA1: ' . sha1($password) . ''; // mật khẩu đã được mã hóa bằng sha1 ?>

Để bảo mật hơn bạn có thể kết quả 2 hàm này với nhau để tạo ra chuỗi mã hóa khó dịch ngược hoặc tự viết thêm một số thuật toán cắt ghét chuỗi của riêng bạn.

Hàm md5_file() và sha1_file()

Như tên gọi, bạn có thể mã hóa md5 và sha1 cho một tập tin. Bạn có thể thực hiện đoạn code mã hóa đơn giản như sau:

$file = 'dammio.txt';
echo 'Mã hóa MD5 tập tin ' . $file . ': ' . md5_file($file);

Hàm crc32()

CRC là viết tắt của từ Cyclic Redundancy Check, tạm dịch là “Kiểm dư chu trình”, là một phương pháp kiểm tra và phát hiện lỗi, được sử dụng trong các mạng số và thiết bị lưu trữ để phát hiện sự thay đổi tình cờ đối với dữ liệu được truyền đi hay lưu trữ.

Hàm có thể dùng hàm crc32() để checksum hay kiểm tra dữ liệu nhận được có bị lỗi hay hư hỏng hay không. Hãy cùng xét đến ví dụ sau:

Hàm hash()

Hàm hash cho phép bạn mã hóa tất cả các dạng md5, sha1,… chỉ cần dùng hàm này. Cú pháp:

string hash (string $algo, string $data, bool $output)

Trong đó $algo là thuật toán mã hóa (MD5, SHA1,…), $data là dữ liệu cần mã hóa, $output là dạng đầu ra, nếu = TRUE là dạng dữ liệu đầu ra nhị phân, = FALSE (hay mặc định) là dữ liệu đầu ra văn bản.

Ví dụ mã hóa chuỗi ‘dammio’ bằng thuật toán RIPEMD (RIPE Message Digest), chủ yếu dùng trong mã hóa tiền ảo Bitcoin.

";
echo 'Nhị phân: ' . hash('ripemd160', 'dammio', TRUE);
?>

Ngoài ra bạn còn có hàm crypt() và password_hash() cũng với chức năng mã hóa thông tin tương tự.