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

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,282
    Đã được thích:
    1,039
    Đ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

    danh sách diễn đàn rao vặt gov chất lượng
    Chỉnh sửa cuối: 28/5/18
  2. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,282
    Đã được thích:
    1,039
    Đ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ã.
     
  3. thuannsva

    thuannsva Thành Viên Mới

    Tham gia ngày:
    26/7/20
    Bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    Do có nhu cầu thay đổi chổ ở, nên tôi cần nhượng lại nhà phố liền kề KDC Park Riverside (5x15m) Q9, Full nội thất.
    HIỆN TRẠNG CĂN NHÀ NHƯ SAU:
    - 03 Phòng ngủ (bao gồm 1PN cho bé gái), 03 WC
    - Thiết bị máy lạnh Daikin
    - Thiết bị vệ sinh TOTO
    - Thiết bị bếp Hafele, Hitachi
    - Lát cầu thang và bếp bằng đá Marble
    - 02 máy giặt
    - Nội thất còn như mới, được thiết kế tỉ mỉ và có yếu tố phong thủy
    - 01 Tivi Sony
    - Dán giấy dán tường Full diện tích.
    - Trang bị lưới chắn côn trùng ở tất cả các cửa.
    MỌI NGƯỜI CÓ NHU CẦU, vui lòng liên hệ trực tiếp qua điện thoại/Zalo 0931.23.08.87 để xem nhà hoặc xem hình ảnh trước.
    GIÁ BÁN: 6,6T CÓ THƯƠNG LƯỢNG VỚI KHÁCH CÓ THIỆN CHÍ VÀ THẬT SỰ CÓ NHU CẦU
     


Like và Share ủng hộ ITSEOVN