Code mã hóa và giải mã base32 đơn giản trong PHP

Thảo luận trong 'Ngôn ngữ lập trình web PHP' bắt đầu bởi admin, 28/5/18.

  1. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,895
    Đã được thích:
    1,198
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Để mã hóa dữ liệu dạng base32_encode, base32_decode bạn dùng code dưới để mã hóa và giải mã dữ liệu PHP cấp thấp.

    Cách 1:

    Để mã hóa bạn dùng code sau:
    Mã:
    function base32_encode($d)
    {
    list($t, $b, $r) = array("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", "", "");
    foreach(str_split($d) as $c)
      $b = $b . sprintf("%08b", ord($c));
    foreach(str_split($b, 5) as $c)
      $r = $r . $t[bindec($c)];
    return($r);
    }
    
    Để giải mã bạn dùng code sau:
    Mã:
    function base32_decode($d)
    {
    list($t, $b, $r) = array("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", "", "");
    foreach(str_split($d) as $c)
        $b = $b . sprintf("%05b", strpos($t, $c));
    foreach(str_split($b, 8) as $c)
        $r = $r . chr(bindec($c));
    return($r);
    }
    
    Cách 2:

    Để mã hóa bạn dùng code sau:
    Mã:
    function webigin2_base32_encode($str) {
        $BASE32_TABLE = '0123456789bcdfghjklmnpqrstuvwxyz';
        $out = '';
        $i = $v = $bits = 0;
        $str_len = strlen($str);
        while ($i < $str_len) {
            $v |= ord($str[$i++]) << $bits;
            $bits += 8;
            while ($bits >= 5) {
                $out .= $BASE32_TABLE[$v & 31];
                $bits -= 5;
                $v >>= 5;
            }
        }
        if ($bits > 0) {
            $out .= $BASE32_TABLE[$v & 31];  
        }
        return $out;
    }
    
    Để giải mã bạn dùng code sau:
    Mã:
    function webigin2_base32_decode($str, $extrabits = 0) {
        $BASE32_TABLE = '0123456789bcdfghjklmnpqrstuvwxyz';
        $str_len = strlen($str);
        $out = '';
        $i = $v = $vbits = 0;
        while ($i < $str_len) {
            if (($x = strpos($BASE32_TABLE, $str[$i++])) == FALSE) {
                return FALSE;
            }
            $v |= $x << $vbits;
            $vbits += 5;
            if ($vbits >= 8) {
                $out .= chr($v);
                $v >>= 8;
                $vbits -= 8;
            }
        }
        $vbits += $extrabits;
        while ($vbits >= 8) {
            $out .= chr($v);
            $v >>= 8;
            $vbits -= 8;
        }
        return $out;
    }
     
    Cảm ơn đã xem bài:

    Code mã hóa và giải mã base32 đơn giản trong PHP

    Chỉnh sửa cuối: 28/5/18
  2. admin
    Tham gia ngày:
    22/5/13
    Bài viết:
    4,895
    Đã được thích:
    1,198
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Các bạn nên sử dụng cách 2 nhé, vì mình check qua, cách 2 ổn định hơn cách 1 khi mã hóa và giải mã.
     


Chủ để tương tự : Code hóa
Diễn đàn Tiêu đề Date
Ngôn ngữ lập trình web PHP Tự Viết Code mã hóa và giải mã base64 đơn giản trong PHP 26/5/18
Ngôn ngữ lập trình web PHP Cần pro code web PHP 9/4/19
Ngôn ngữ lập trình web PHP Lấy đường dẫn src thẻ <img hình ảnh trong chuỗi HTML code PHP 24/11/17
Ngôn ngữ lập trình web PHP Đọc và ghi File .txt từ hosting server khác mơi đặt code PHP 23/11/17
Ngôn ngữ lập trình web PHP Lọc dấu tiếng việt trong PHP, xóa dấu tiếng việt trong chuỗi code PHP 9/5/17