Mã hóa password trong php
Tìm hiểu khi sử dụng các hàm băm tạo dữ liệu lưu trữ passwordKhi 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ụ: Show $raw_password = 'abc123'; $crypt = md5($raw_password); //e99a18c428cb38d5f260853678922e03 Ví dụ trên, đã sử dụng hàm băm của PHP là 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 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à 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 Hàm Cú phápmd5(string $str) input: $str: Chuỗi cần mã hóa Output: Chuỗi dữ liệu có 32 ký tự sau khi mã hóa Lưu ý: Đây là hệ mã hóa 1 chiều nên hàm này chỉ đóng vai trò mã hóa và không có hàm giải mã nó. Có nghĩa từ dữ liệu được mã hóa muốn tìm ra chuỗi ban đầu cần phải vét cạn. Thuật toán kiểm tra mật khẩuĐể kiểm tra mật khẩu đúng hay không cần phải kiểm tra chuỗi sau khi mã hóa có khớp hay không. Tôi có ví dụ bên dưới Để kiểm tra xem mật khẩu có đúng hay không chúng ta cần kiểm tra theo ý tưởng bên dưới. Ví dụ hàm Md5()Ví dụ 1: Mã hóa chuỗi “abc” Kết quả ta nhận được chuỗi 900150983cd24fb0d6963f7d28e17f72 Ví dụ 2: Mã hóa mật khẩu “unitop20!@#” 30868f64811f1c4eb9a9a32fac786485 Tổng kết Qua bài này tôi đã hướng dẫn bạn cách để mã hóa một thông tin cho trước với hàm md5(). Hàm này thường được sử dụng để mã hóa mật khẩu người dùng nhằm tăng độ an toàn cho tài khoản. Ngay bây giờ bạn nên ghi chú lại hàm này và thực hành lại để nắm chắc bài học. Xin chào, sớm hẹn gặp lại! 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: Để 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:
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ự. |