Kết nối

Một số hàm mã hóa và kiểm tra thông tin trong PHP

14.522 lượt xem 
 

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:

<?php
// Mật khẩu là dammio
$password = 'dammio';

echo 'Mật khẩu <b>' . $password . '</b> được mã hóa thành: <br/><br/>';
echo 'MD5: <b>' . md5($password) . '</b><br/>'; // mật khẩu đã được mã hóa bằng md5
echo 'SHA1: <b>' . sha1($password) . '</b>'; // 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ữ.

Liên quan:  [PHP] Phần 17: Sắp xếp mảng trong PHP

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:

<?php
$checksum = crc32("Thông tin dữ liệu cần kiểm tra CRC --- dammio.com!");
printf("%u\n", $checksum);
// Kết quả: 1139409907
?>

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.

<?php
echo 'Văn bản: ' . hash('ripemd160', 'dammio') . "<br />";
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ự.

Trích dẫn bài viết
  • APA:
    Dammio. (2019). Một số hàm mã hóa và kiểm tra thông tin trong PHP. https://www.dammio.com/2019/02/14/mot-so-ham-ma-hoa-va-kiem-tra-thong-tin-trong-php.
  • BibTeX:
    @misc{dammio,
    author = {Dammio},
    title = {Một số hàm mã hóa và kiểm tra thông tin trong PHP},
    year = {2019},
    url = {https://www.dammio.com/2019/02/14/mot-so-ham-ma-hoa-va-kiem-tra-thong-tin-trong-php},
    urldate = {2025-03-20}
    }
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x