Làm cách nào để biết hình ảnh có phải là base64 hay không trong PHP?

Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.

function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}

Hàm base64_encode() là một hàm có sẵn trong PHP được sử dụng để chuyển đổi bất kỳ dữ liệu nào sang mã hóa base64. Để chuyển đổi hình ảnh thành mã hóa base64, trước tiên cần lấy nội dung của tệp. Điều này có thể được thực hiện với sự trợ giúp của hàm file_get_contents() của PHP. Sau đó chuyển dữ liệu thô này sang hàm base64_encode() để mã hóa

Chức năng bắt buộc

  • Hàm base64_encode() Hàm base64_encode() là một hàm có sẵn trong PHP được sử dụng để Mã hóa dữ liệu với MIME base64. MIME (Tiện ích mở rộng thư Internet đa năng) base64 được sử dụng để mã hóa chuỗi trong base64. Dữ liệu base64_encoded chiếm thêm 33% dung lượng so với dữ liệu gốc
  • Hàm file_get_contents() Hàm file_get_contents() trong PHP là một hàm sẵn có được sử dụng để đọc một tệp thành một chuỗi. Chức năng này sử dụng các kỹ thuật ánh xạ bộ nhớ được máy chủ hỗ trợ và do đó nâng cao hiệu suất khiến nó trở thành một cách ưa thích để đọc nội dung của tệp

Hình ảnh đầu vào

Làm cách nào để biết hình ảnh có phải là base64 hay không trong PHP?

Chương trình




 

// Get the image and convert into string

$img =____9

bytes = (string_length(encoded_string) − 814) / 1.37
0

bytes = (string_length(encoded_string) − 814) / 1.37
1
bytes = (string_length(encoded_string) − 814) / 1.37
2

 

1

2 =4

bytes = (string_length(encoded_string) − 814) / 1.37
0$img
bytes = (string_length(encoded_string) − 814) / 1.37
2

 

9

 0 2 2

 3

đầu ra

iVBORw0KGgoAAAANSUhEUgAAApsAAAC4CAYAAACsNSfVAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJ
cEhZcwAADsQAAA7EAZUrDhsAAAAZdEVYdFNvZnR3YXJdhfdsglgklAEFkb2JlIEltYWdlUmVhZHlxyWqwrwtwefd
...
TeUsalQKBQKhUKhsBvK2FQoFAqFQqFQ2A1lbCoUCoVCoVAo7IYyNhUKhUKhUCgUdkMZmwqFQKBQKO0H0fxpZ1bfc

Thẩm quyền giải quyết

  • http. //php. net/thủ công/vi/chức năng. mã hóa base64. php
  • http. //php. net/thủ công/vi/chức năng. tập tin lấy nội dung. php

PHP là ngôn ngữ kịch bản phía máy chủ được thiết kế dành riêng cho phát triển web. Bạn có thể học PHP từ đầu bằng cách làm theo Hướng dẫn PHP và Ví dụ về PHP này

Trong lập trình máy tính, Base64 là một nhóm lược đồ mã hóa nhị phân thành văn bản biểu thị dữ liệu nhị phân (cụ thể hơn là chuỗi byte 8 bit) theo chuỗi 24 bit có thể được biểu thị bằng bốn chữ số Base64 6 bit

Phổ biến đối với tất cả các lược đồ mã hóa nhị phân thành văn bản, Base64 được thiết kế để mang dữ liệu được lưu trữ ở định dạng nhị phân trên các kênh chỉ hỗ trợ nội dung văn bản một cách đáng tin cậy. Base64 đặc biệt phổ biến trên World Wide Web[1] trong đó một trong những ứng dụng của nó là khả năng nhúng các tệp hình ảnh hoặc nội dung nhị phân khác bên trong nội dung văn bản như tệp HTML và CSS. [2]

Base64 cũng được sử dụng rộng rãi để gửi tệp đính kèm e-mail. Điều này là bắt buộc vì SMTP – ở dạng ban đầu – được thiết kế để chỉ vận chuyển các ký tự ASCII 7 bit. Mã hóa này gây ra tổng chi phí là 33–37% (33% do chính mã hóa; thêm tối đa 4% do ngắt dòng được chèn)

Mỗi chữ số Base64 có thể nhận 64 giá trị khác nhau, mã hóa 6 bit dữ liệu. Những ký tự nào được chọn để biểu thị 64 giá trị khác nhau giữa các lần triển khai. Chiến lược chung là chọn 64 ký tự phổ biến cho hầu hết các bảng mã và cũng có thể in được. Sự kết hợp này khiến dữ liệu khó có thể bị sửa đổi khi truyền qua các hệ thống thông tin, chẳng hạn như email, theo truyền thống không phải là 8-bit sạch. [3] Ví dụ: triển khai Base64 của MIME sử dụng Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7–Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8, Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9–function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0 và function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1–function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2 cho 62 giá trị đầu tiên. Các biến thể khác chia sẻ thuộc tính này nhưng khác nhau về các ký hiệu được chọn cho hai giá trị cuối cùng;

Các phiên bản sớm nhất của loại mã hóa này được tạo ra để liên lạc quay số giữa các hệ thống chạy cùng một hệ điều hành, ví dụ: uuencode cho UNIX và BinHex cho TRS-80 (sau này được điều chỉnh cho Macintosh), và do đó có thể đưa ra nhiều giả định hơn về . Chẳng hạn, uuencode sử dụng chữ in hoa, chữ số và nhiều ký tự dấu chấm câu, nhưng không sử dụng chữ thường. [4][5][6][3]

Bảng Base64 từ RFC 4648[sửa mã nguồn]

Đây là bảng chữ cái Base64 được xác định trong RFC 4648 §4. Xem thêm Tóm tắt biến thể (bên dưới)

IndexBinaryCharIndexBinaryCharIndexBinaryCharIndexBinaryChar0000000Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
716010000function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
432100000function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
548110000Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
701000001Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7117010001Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7233100001Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7349110001Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
742000010Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7518010010Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7634100010Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7750110010Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
783000011Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7919010011Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8035100011Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8151110011function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
04000100Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8320010100Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8436100100Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8552110100function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
15000101Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8721010101Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8837100101Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8953110101Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
906000110Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9122010110Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9238100110Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9354110110Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
947000111Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9523010111Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9639100111Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9755110111Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
988001000Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9924011000function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0040101000function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0156111000function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
029001001function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0325011001Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
841101001function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0557111001function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0610001010function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0726011010Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
942101010function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0958111010function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1011001011function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1127011011function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1243101011function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1359111011function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1412001100function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1528011100function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1644101100function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1760111100function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1813001101function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1929011101function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2045101101function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2161111101function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
214001110function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2330011110function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2446101110function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2562111110function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2615001111function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2731011111function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2847101111function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2963111111Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70Padding=

Các ví dụ[sửa]

Ví dụ bên dưới sử dụng văn bản ASCII để đơn giản, nhưng đây không phải là trường hợp sử dụng thông thường, vì nó đã có thể được chuyển an toàn trên tất cả các hệ thống có thể xử lý Base64. Cách sử dụng điển hình hơn là mã hóa dữ liệu nhị phân (chẳng hạn như hình ảnh);

Đây là một thành ngữ nổi tiếng từ điện toán phân tán

Nhiều tay làm công việc nhẹ

Khi trích dẫn (không có khoảng trắng ở cuối) được mã hóa thành Base64, nó được biểu diễn dưới dạng chuỗi byte gồm các ký tự ASCII 8 bit được đệm được mã hóa trong lược đồ Base64 của MIME như sau (dòng mới và khoảng trắng có thể xuất hiện ở bất kỳ đâu nhưng được bỏ qua trên

TWWeeSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu

Trong trích dẫn trên, giá trị được mã hóa của Man là TWFu. Được mã hóa bằng ASCII, các ký tự M, a và n được lưu trữ dưới dạng các giá trị byte Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
71, Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
72 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
73, là các giá trị nhị phân 8 bit Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
74, Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
75 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
76. Ba giá trị này được nối với nhau thành một chuỗi 24 bit, tạo ra Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
77. Nhóm 6 bit (6 bit có tối đa 26 = 64 giá trị nhị phân khác nhau) được chuyển đổi thành các số riêng lẻ từ đầu đến cuối (trong trường hợp này, có bốn số trong chuỗi 24 bit), sau đó các số này được chuyển đổi thành

Như ví dụ này minh họa, mã hóa Base64 chuyển đổi ba octet thành bốn ký tự được mã hóa

SourceText (ASCII)ManOctets77 (0x4d)97 (0x61)110 (0x6e)Bits010011010110000101101110Base64
đã mã hóaSextets1922546Nhân vậtTWWuOctets84 (0x54)87 (0x57)70 (0x46)117 (0x75)

Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 ký tự đệm có thể được thêm vào để làm cho khối được mã hóa cuối cùng chứa bốn ký tự Base64

Chuyển đổi thập lục phân sang bát phân rất hữu ích để chuyển đổi giữa nhị phân và Base64. Chuyển đổi như vậy có sẵn cho cả máy tính tiên tiến và ngôn ngữ lập trình. Ví dụ: biểu diễn thập lục phân của 24 bit ở trên là 4D616E. Biểu diễn bát phân là 23260556. 8 chữ số bát phân đó có thể được chia thành các cặp (23 26 05 56) và mỗi cặp có thể được chuyển đổi thành số thập phân để mang lại 19 22 05 46. Sử dụng bốn số thập phân đó làm chỉ số cho bảng chữ cái Base64, các ký tự ASCII tương ứng là TWFu

Nếu chỉ có hai octet đầu vào quan trọng (e. g. , 'Ma'), hoặc khi nhóm đầu vào cuối cùng chỉ chứa hai octet, tất cả 16 bit sẽ được ghi lại trong ba chữ số Base64 đầu tiên (18 bit);

SourceText (ASCII)MaOctets77 (0x4d)97 (0x61)Bits010011010110000100Base64
encodedSextets19224Padding CharacterTWE=Octets84 (0x54)87 (0x57)69 (0x45)61 (0x3D)

Nếu chỉ có một octet đầu vào quan trọng (e. g. , 'M'), hoặc khi nhóm đầu vào cuối cùng chỉ chứa một octet, tất cả 8 bit sẽ được ghi lại trong hai chữ số Base64 đầu tiên (12 bit);

SourceText (ASCII)MOctets77 (0x4d)Bits010011010000Base64
encodedSextets1916PaddingPadding CharacterTQ==Octets84 (0x54)81 (0x51)61 (0x3D)61 (0x3D)

Phần đệm đầu ra [ chỉnh sửa ]

Bởi vì Base64 là mã hóa sáu bit và vì các giá trị được giải mã được chia thành các bộ tám bit 8 bit, nên cứ bốn ký tự của văn bản được mã hóa Base64 (4 sextet = 4 × 6 = 24 bit) đại diện cho ba bộ tám dữ liệu hoặc văn bản không được mã hóa ( . Điều này có nghĩa là khi độ dài của đầu vào chưa được mã hóa không phải là bội số của ba, thì đầu ra được mã hóa phải được thêm phần đệm để độ dài của nó là bội số của bốn. Ký tự đệm là Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78, cho biết không cần thêm bit nào để mã hóa đầy đủ đầu vào. (Điều này khác với Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7, có nghĩa là các bit còn lại đều là số không. ) Ví dụ bên dưới minh họa cách cắt bớt đầu vào của trích dẫn trên sẽ thay đổi phần đệm đầu ra

InputOutputPaddingTextLengthTextLengthlight hoạt động. 11bGlnaHQgd29yay4=161light work10bGlnaHQgd29yaw==162light wor9bGlnaHQgd29y120light wo8bGlnaHQgd28=121light w7bGlnaHQgdw==122

Ký tự đệm không cần thiết để giải mã, vì số lượng byte bị thiếu có thể được suy ra từ độ dài của văn bản được mã hóa. Trong một số triển khai, ký tự đệm là bắt buộc, trong khi đối với những triển khai khác, ký tự này không được sử dụng. Một ngoại lệ trong đó các ký tự đệm được yêu cầu là khi nhiều tệp được mã hóa Base64 được ghép nối

Giải mã Base64 với phần đệm[sửa]

Khi giải mã văn bản Base64, bốn ký tự thường được chuyển đổi lại thành ba byte. Các ngoại lệ duy nhất là khi các ký tự đệm tồn tại. Một Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 chỉ ra rằng bốn ký tự sẽ chỉ giải mã thành hai byte, trong khi function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
44 chỉ ra rằng bốn ký tự sẽ giải mã thành một byte duy nhất. Ví dụ

EncodedPaddingLengthDecodedbGlnaHQgdw==function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
441light wbGlnaHQgd28=Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
782light wobGlnaHQgd29yNone3light wor

Một cách khác để diễn giải ký tự đệm là coi nó như một lệnh loại bỏ 2 bit ở cuối chuỗi bit mỗi khi gặp phải ____ _ _ _ _ _. Ví dụ: khi `bGlnaHQgdw==` được giải mã, chúng tôi chuyển đổi từng ký tự (ngoại trừ các lần xuất hiện ở cuối của Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78) thành biểu diễn 6 bit tương ứng của chúng, sau đó loại bỏ 2 bit ở cuối cho Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 đầu tiên và 2 bit ở cuối cho ký tự còn lại . Trong trường hợp này, chúng tôi sẽ nhận được 6 bit từ function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
20 và 6 bit khác từ Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70 cho chuỗi bit có độ dài 12, nhưng vì chúng tôi loại bỏ 2 bit cho mỗi Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 (tổng cộng là 4 bit), nên function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
54 kết thúc

Giải mã Base64 không đệm[sửa]

Không có phần đệm, sau khi giải mã bình thường bốn ký tự thành ba byte lặp đi lặp lại, có thể còn lại ít hơn bốn ký tự được mã hóa. Trong tình huống này, chỉ còn lại hai hoặc ba ký tự. Một ký tự được mã hóa còn lại là không thể, bởi vì một ký tự Base64 chỉ chứa 6 bit và 8 bit được yêu cầu để tạo một byte, do đó cần tối thiểu hai ký tự Base64. Ký tự đầu tiên đóng góp 6 bit và ký tự thứ hai đóng góp 2 bit đầu tiên. Ví dụ

LengthEncodedLengthDecoded2bGlnaHQgdw1light w3bGlnaHQgd282light wo4bGlnaHQgd29y3light wor

Triển khai và lịch sử[sửa | sửa mã nguồn]

Bảng tóm tắt các biến thể[sửa | sửa mã nguồn]

Việc triển khai có thể có một số ràng buộc đối với bảng chữ cái được sử dụng để biểu diễn một số mẫu bit. Điều này đặc biệt liên quan đến hai ký tự cuối cùng được sử dụng trong bảng chữ cái ở vị trí 62 và 63 và ký tự được sử dụng để đệm (có thể bắt buộc trong một số giao thức hoặc bị loại bỏ trong các giao thức khác). Bảng bên dưới tóm tắt các biến thể đã biết này và cung cấp liên kết đến các tiểu mục bên dưới

  1. ^ a b Điều quan trọng cần lưu ý là biến thể này nhằm cung cấp các tính năng phổ biến mà chúng không được chuyên biệt hóa bằng cách triển khai, đảm bảo kỹ thuật mạnh mẽ. Điều này đặc biệt liên quan đến các hạn chế và mã hóa dòng riêng biệt chưa được xem xét khi các tiêu chuẩn trước đó được đồng chọn để sử dụng ở nơi khác. Do đó, các tính năng được chỉ ra ở đây có thể bị ghi đè

Thư tăng cường bảo mật[sửa]

Việc sử dụng tiêu chuẩn hóa đầu tiên được biết đến của mã hóa hiện được gọi là MIME Base64 là trong giao thức Thư điện tử nâng cao quyền riêng tư (PEM), do RFC 989 đề xuất vào năm 1987. PEM định nghĩa sơ đồ "mã hóa có thể in được" sử dụng mã hóa Base64 để chuyển đổi một chuỗi octet tùy ý thành định dạng có thể được biểu thị bằng các dòng ký tự 6 bit ngắn, theo yêu cầu của các giao thức truyền như SMTP. [7]

Phiên bản hiện tại của PEM (được chỉ định trong RFC 1421) sử dụng bảng chữ cái gồm 64 ký tự bao gồm các chữ cái La Mã viết hoa và viết thường (Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
7–Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
8, Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
9–function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
0), các chữ số (function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
1–function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
2), và function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
26 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70 . Ký hiệu Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 cũng được sử dụng làm hậu tố đệm. [4] Thông số kỹ thuật ban đầu, RFC 989, đã sử dụng thêm ký hiệu Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
704 để phân định dữ liệu được mã hóa nhưng không được mã hóa trong luồng đầu ra

Để chuyển đổi dữ liệu sang mã hóa có thể in PEM, byte đầu tiên được đặt trong tám bit quan trọng nhất của bộ đệm 24 bit, byte tiếp theo ở giữa tám bit và byte thứ ba trong tám bit ít quan trọng nhất. Nếu còn ít hơn ba byte để mã hóa (hoặc tổng cộng), các bit bộ đệm còn lại sẽ bằng không. Sau đó, bộ đệm được sử dụng, sáu bit mỗi lần, quan trọng nhất trước tiên, làm chỉ số trong chuỗi. "______2705" và ký tự được chỉ định được xuất ra

Quá trình được lặp lại trên dữ liệu còn lại cho đến khi còn ít hơn bốn octet. Nếu ba octet vẫn còn, chúng được xử lý bình thường. Nếu còn lại ít hơn ba octet (24 bit) để mã hóa, thì dữ liệu đầu vào sẽ được đệm bên phải với các bit 0 để tạo thành bội số nguyên của sáu bit

Sau khi mã hóa dữ liệu không được đệm, nếu hai octet của bộ đệm 24 bit là các số không được đệm, thì hai ký tự Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 được thêm vào đầu ra; . Điều này báo hiệu cho bộ giải mã rằng các bit 0 được thêm vào do phần đệm nên được loại trừ khỏi dữ liệu được tạo lại. Điều này cũng đảm bảo rằng độ dài đầu ra được mã hóa là bội số của 4 byte

PEM yêu cầu tất cả các dòng được mã hóa bao gồm chính xác 64 ký tự có thể in được, ngoại trừ dòng cuối cùng, dòng này có thể chứa ít ký tự có thể in hơn. Các dòng được phân tách bằng các ký tự khoảng trắng theo quy ước cục bộ (dành riêng cho nền tảng)

Thông số kỹ thuật MIME (Phần mở rộng thư Internet đa năng) liệt kê Base64 là một trong hai lược đồ mã hóa nhị phân thành văn bản (kế hoạch còn lại có thể in được trích dẫn). [5] Mã hóa Base64 của MIME dựa trên mã hóa của phiên bản RFC 1421 của PEM. nó sử dụng cùng một bảng chữ cái 64 ký tự và cơ chế mã hóa như PEM và sử dụng ký hiệu Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78 cho phần đệm đầu ra theo cùng một cách, như được mô tả tại RFC 2045

MIME không chỉ định độ dài cố định cho các dòng được mã hóa Base64, nhưng nó chỉ định độ dài dòng tối đa là 76 ký tự. Ngoài ra, nó chỉ định rằng bất kỳ ký tự nào nằm ngoài bộ tiêu chuẩn gồm 64 ký tự mã hóa (Ví dụ: chuỗi CRLF), phải được bộ giải mã tuân thủ bỏ qua, mặc dù hầu hết các triển khai đều sử dụng cặp dòng mới CR/LF để phân định các dòng được mã hóa

Do đó, độ dài thực tế của dữ liệu nhị phân được mã hóa Base64 tuân thủ MIME thường bằng khoảng 137% độ dài dữ liệu gốc (4⁄3×78⁄76), mặc dù đối với các tin nhắn rất ngắn, chi phí có thể cao hơn nhiều do chi phí của . Rất gần đúng, kích thước cuối cùng của dữ liệu nhị phân được mã hóa Base64 bằng 1. 37 lần kích thước dữ liệu ban đầu + 814 byte (đối với tiêu đề). Kích thước của dữ liệu được giải mã có thể được tính gần đúng với công thức này

bytes = (string_length(encoded_string) − 814) / 1.37

UTF-7, được mô tả đầu tiên trong RFC 1642, sau này được thay thế bởi RFC 2152, đã giới thiệu một hệ thống có tên là Base64 đã sửa đổi. Sơ đồ mã hóa dữ liệu này được sử dụng để mã hóa UTF-16 dưới dạng các ký tự ASCII để sử dụng trong các phương thức vận chuyển 7 bit, chẳng hạn như SMTP. Nó là một biến thể của mã hóa Base64 được sử dụng trong MIME. [8][9]

Bảng chữ cái "Modified Base64" bao gồm bảng chữ cái MIME Base64, nhưng không sử dụng ký tự đệm "Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78". UTF-7 được thiết kế để sử dụng trong tiêu đề thư (được xác định trong RFC 2047) và ký tự "Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78" được dành riêng trong ngữ cảnh đó làm ký tự thoát cho mã hóa "có thể in trích dẫn". Base64 đã sửa đổi chỉ cần bỏ qua phần đệm và kết thúc ngay sau chữ số Base64 cuối cùng chứa các bit hữu ích để lại tối đa ba bit không sử dụng trong chữ số Base64 cuối cùng

OpenPGP[sửa mã nguồn]

OpenPGP, được mô tả trong RFC 4880, mô tả mã hóa Radix-64, còn được gọi là "áo giáp ASCII". Radix-64 giống với mã hóa "Base64" được mô tả bởi MIME, với việc bổ sung CRC 24 bit tùy chọn. Tổng kiểm tra được tính trên dữ liệu đầu vào trước khi mã hóa; . [10]

RFC 3548[sửa mã nguồn]

RFC 3548, có tựa đề Mã hóa dữ liệu Base16, Base32 và Base64, là một bản ghi nhớ cung cấp thông tin (không theo quy chuẩn) nhằm cố gắng thống nhất các thông số kỹ thuật RFC 1421 và RFC 2045 của mã hóa Base64, mã hóa bảng chữ cái thay thế và Base32 (hiếm khi

Trừ khi các triển khai được viết theo một thông số kỹ thuật đề cập đến RFC 3548 và yêu cầu cụ thể khác, RFC 3548 cấm các triển khai tạo thông báo chứa các ký tự bên ngoài bảng chữ cái mã hóa hoặc không có phần đệm, đồng thời tuyên bố rằng các triển khai bộ giải mã phải từ chối dữ liệu chứa các ký tự bên ngoài bảng chữ cái mã hóa . [6]

RFC 4648[sửa mã nguồn]

RFC này lỗi thời RFC 3548 và tập trung vào Base64/32/16

Tài liệu này mô tả các lược đồ mã hóa Base64, Base32 và Base16 thường được sử dụng. Nó cũng thảo luận về việc sử dụng nguồn cấp dữ liệu trong dữ liệu được mã hóa, việc sử dụng phần đệm trong dữ liệu được mã hóa, việc sử dụng các ký tự không phải bảng chữ cái trong dữ liệu được mã hóa, việc sử dụng các bảng chữ cái mã hóa khác nhau và mã hóa chuẩn

Mã hóa Base64 có thể hữu ích khi thông tin nhận dạng khá dài được sử dụng trong môi trường HTTP. Ví dụ: khung lưu giữ cơ sở dữ liệu cho các đối tượng Java có thể sử dụng mã hóa Base64 để mã hóa id duy nhất tương đối lớn (thường là UUID 128 bit) thành một chuỗi để sử dụng làm tham số HTTP trong biểu mẫu HTTP hoặc URL HTTP GET. Ngoài ra, nhiều ứng dụng cần mã hóa dữ liệu nhị phân theo cách thuận tiện để đưa vào URL, kể cả trong các trường biểu mẫu web ẩn và Base64 là mã hóa thuận tiện để hiển thị chúng theo cách nhỏ gọn

Sử dụng Base64 tiêu chuẩn trong URL yêu cầu mã hóa các ký tự 'function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
26', 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70' và 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78' thành các chuỗi thập lục phân được mã hóa phần trăm đặc biệt ('function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
26' trở thành 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
716', 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70' trở thành 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
718' và 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78' trở thành 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
720'

Vì lý do này, tồn tại các biến thể Base64 đã sửa đổi cho các biến thể URL (chẳng hạn như base64url trong RFC 4648), trong đó các ký tự 'function base64url_encode($data, $pad = null) {
    $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
    if (!$pad) {
        $data = rtrim($data, '=');
    }
    return $data;
}
function base64url_decode($data) {
    return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
26' và 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
70' của Base64 tiêu chuẩn được thay thế tương ứng bằng 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
723' và 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
724', do đó, việc sử dụng bộ mã hóa URL/ . Một trang web phổ biến để sử dụng như vậy là YouTube. [11] Một số biến thể cho phép hoặc yêu cầu bỏ qua dấu đệm 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78' để tránh bị nhầm lẫn với dấu phân tách trường hoặc yêu cầu bất kỳ phần đệm nào như vậy phải được mã hóa theo phần trăm. Một số thư viện[cái nào?] sẽ mã hóa 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
78' thành 'Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
727', có khả năng khiến các ứng dụng bị tấn công đường dẫn tương đối khi tên thư mục được mã hóa từ dữ liệu người dùng. [cần dẫn nguồn]

Các phương thức JavaScript Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
728 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
729, được xác định trong đặc tả dự thảo HTML5,[12] cung cấp chức năng mã hóa và giải mã Base64 cho các trang web. Phương thức Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
729 xuất ra các ký tự đệm, nhưng đây là các ký tự tùy chọn trong đầu vào của phương thức Base64 for URL parameters/filenames, that adhere to RFC 4648.
Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
728

Base64 có thể được sử dụng trong nhiều ngữ cảnh khác nhau

  • Base64 có thể được sử dụng để truyền và lưu trữ văn bản có thể gây xung đột dấu phân cách
  • Base64 được sử dụng để mã hóa chuỗi ký tự trong tệp Định dạng trao đổi dữ liệu LDAP
  • Base64 thường được sử dụng để nhúng dữ liệu nhị phân vào tệp XML, sử dụng cú pháp tương tự như Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    732 e. g. biểu tượng yêu thích trong Firefox xuất ________ 2733
  • Base64 được sử dụng để mã hóa các tệp nhị phân, chẳng hạn như hình ảnh trong tập lệnh, để tránh phụ thuộc vào các tệp bên ngoài
  • Lược đồ URI dữ liệu có thể sử dụng Base64 để thể hiện nội dung tệp. Chẳng hạn, hình nền và phông chữ có thể được chỉ định trong tệp biểu định kiểu CSS dưới dạng URI Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    734, thay vì được cung cấp trong các tệp riêng biệt
  • Mặc dù không phải là một phần của thông số kỹ thuật chính thức cho SVG, nhưng một số người xem có thể hiểu Base64 khi được sử dụng cho các phần tử được nhúng, chẳng hạn như hình ảnh bên trong SVG. [13]
  • Base64 có thể được sử dụng để lưu trữ/truyền một lượng dữ liệu nhị phân tương đối nhỏ thông qua chức năng khay nhớ tạm văn bản của máy tính, đặc biệt trong trường hợp thông tin không đảm bảo được lưu vĩnh viễn hoặc khi thông tin phải được gửi nhanh giữa nhiều loại khác nhau, có khả năng không tương thích . Một ví dụ là biểu diễn các khóa công khai của người nhận tiền điện tử dưới dạng chuỗi văn bản được mã hóa Base64, có thể dễ dàng sao chép và dán vào phần mềm ví của người dùng
  • Dữ liệu nhị phân phải được con người xác minh nhanh chóng như một cơ chế an toàn, chẳng hạn như tổng kiểm tra tệp hoặc dấu vân tay chính, thường được trình bày trong Base64 để kiểm tra dễ dàng, đôi khi có định dạng bổ sung, chẳng hạn như tách từng nhóm bốn ký tự trong biểu diễn của PGP
  • Các mã QR chứa dữ liệu nhị phân đôi khi sẽ lưu trữ nó được mã hóa trong Base64 thay vì chỉ lưu trữ dữ liệu nhị phân thô, vì có sự đảm bảo chắc chắn hơn rằng tất cả các trình đọc mã QR sẽ giải mã chính xác văn bản, cũng như thực tế là một số thiết bị sẽ dễ dàng lưu hơn

Một số ứng dụng sử dụng bảng chữ cái Base64 khác biệt đáng kể so với bảng chữ cái được sử dụng trong các biến thể Base64 phổ biến nhất (xem bảng tóm tắt Biến thể ở trên)

  • Bảng chữ cái Uuencoding không bao gồm các ký tự chữ thường, thay vào đó sử dụng mã ASCII 32 ("Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    735" (dấu cách)) đến 95 ("Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    724"), liên tiếp. Uuencoding sử dụng bảng chữ cái "______2737". Tránh tất cả các chữ cái viết thường là hữu ích, vì nhiều máy in cũ chỉ in chữ hoa. Sử dụng các ký tự ASCII liên tiếp đã tiết kiệm năng lượng tính toán vì chỉ cần thêm 32 mà không cần bảng tra cứu. Việc sử dụng hầu hết các ký tự dấu câu và ký tự khoảng trắng có thể hạn chế tính hữu dụng của nó trong một số ứng dụng, chẳng hạn như những ứng dụng sử dụng các ký tự này làm cú pháp. [cần dẫn nguồn]
  • BinHex 4 (HQX), được sử dụng trong Mac OS cổ điển, loại trừ một số ký tự dễ gây nhầm lẫn trực quan như 'function base64url_encode($data, $pad = null) {
        $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
        if (!$pad) {
            $data = rtrim($data, '=');
        }
        return $data;
    }
    function base64url_decode($data) {
        return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
    }
    14', 'function base64url_encode($data, $pad = null) {
        $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
        if (!$pad) {
            $data = rtrim($data, '=');
        }
        return $data;
    }
    function base64url_decode($data) {
        return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
    }
    23', 'function base64url_encode($data, $pad = null) {
        $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
        if (!$pad) {
            $data = rtrim($data, '=');
        }
        return $data;
    }
    function base64url_decode($data) {
        return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
    }
    5' và 'function base64url_encode($data, $pad = null) {
        $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
        if (!$pad) {
            $data = rtrim($data, '=');
        }
        return $data;
    }
    function base64url_decode($data) {
        return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
    }
    01'. Bảng chữ cái của nó bao gồm các ký tự dấu chấm câu bổ sung. Nó sử dụng bảng chữ cái "Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    742"
  • Môi trường UTF-8 có thể sử dụng các byte tiếp tục không được đồng bộ hóa làm base64. Base64 for URL parameters/filenames, that adhere to RFC 4648.
    Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
    743. Xem UTF-8#Tự đồng bộ hóa
  • Một số ứng dụng khác sử dụng bảng chữ cái tương tự như các biến thể phổ biến, nhưng theo thứ tự khác
    • Unix lưu trữ các hàm băm mật khẩu được tính toán bằng mật mã trong tệp Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      744 bằng mã hóa có tên B64. bảng chữ cái của crypt đặt dấu chấm câu Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      727 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      70 trước các ký tự chữ và số. crypt sử dụng bảng chữ cái "Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      747". Đệm không được sử dụng
    • GEDCOM 5. 5 để trao đổi dữ liệu phả hệ mã hóa các tệp đa phương tiện ở định dạng tệp phân cấp dòng văn bản của nó. GEDCOM sử dụng bảng chữ cái giống như mật mã, đó là "______2747". [14]
    • băm của bcrypt được thiết kế để sử dụng theo cách giống như băm của crypt(3) truyền thống, nhưng bảng chữ cái của bcrypt theo thứ tự khác với của crypt. bcrypt sử dụng bảng chữ cái "Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      749". [15]
    • Xxencoding sử dụng bộ ký tự chủ yếu là chữ và số tương tự như mật mã, nhưng sử dụng function base64url_encode($data, $pad = null) {
          $data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
          if (!$pad) {
              $data = rtrim($data, '=');
          }
          return $data;
      }
      function base64url_decode($data) {
          return base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
      }
      26 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      723 thay vì Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      727 và Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      70. Xxencoding sử dụng bảng chữ cái "______2754"
    • 6PACK, được sử dụng với một số bộ điều khiển nút đầu cuối, sử dụng bảng chữ cái từ 0x00 đến 0x3f. [16]
    • Bash hỗ trợ chữ số trong Base64. Bash sử dụng bảng chữ cái "Base64 for URL parameters/filenames, that adhere to RFC 4648.
      Defaults to dropping the padding on encode since it's not required for decoding, and keeps the URL free of % encodings.
      755". [17]

Một vấn đề với bảng chữ cái RFC 4648 là khi một danh sách sắp xếp gồm các chuỗi mã hóa ASCII được chuyển đổi Base64 và sắp xếp lại, thứ tự của các phần tử sẽ thay đổi. Điều này là do ký tự đệm và các ký tự trong bảng chữ cái thay thế không được sắp xếp theo giá trị ký tự ASCII (có thể thấy giá trị này bằng cách sử dụng các nút sắp xếp của bảng mẫu sau). Các bảng chữ cái như (không đệm) B64 giải quyết vấn đề này

Làm cách nào để kiểm tra hình ảnh base64 trong PHP?

php $array=getimagesize("dữ liệu. hình ảnh/gif; . base64_encode('tệp bất kỳ'). '"); $e=explode("/",$array['mime']); if($e[0]=="image") { echo "file la image . ?> Save this answer.

Làm cách nào để kiểm tra xem dữ liệu có phải là base64 hay không trong PHP?

"; $value_2 = mảng(); tiếng vang "nnbase64. n"; foreach (str_split(base64_decode('Không mã hóa base64',true)) dưới dạng $char) { echo ord($char). "N"; . tối đa($value_2). "

Làm cách nào để kiểm tra xem chuỗi base64 có phải là hình ảnh không?

Không thể phân biệt rõ ràng chuỗi văn bản và chuỗi mã hóa hình ảnh Base64. Cách duy nhất - kiểm tra xem chuỗi của bạn có phải là chuỗi mã hóa Base 64 hợp lệ hay không . Nếu có - có lẽ đó là một hình ảnh. Nếu không - bạn có thể chắc chắn đó là một văn bản.

Làm cách nào để kiểm tra dữ liệu được mã hóa hay không trong PHP?

Trong PHP, mb_detect_encoding() được sử dụng để phát hiện mã hóa ký tự. Nó có thể phát hiện mã hóa ký tự cho một chuỗi từ danh sách các ứng cử viên được sắp xếp theo thứ tự. Chức năng này được hỗ trợ trong PHP 4. 0.