• About
  • Advertise
  • Privacy & Policy
  • Contact
DevZone
  • Home
  • News
  • Dev
    • All
    • Algorithm
    • Architecture
    • Database
    • Design
    • DevOps
    • IoT
    • Network
    • Test
    • Web
    Phương thức xử lý mảng trong javascript

    Phương thức xử lý mảng trong javascript

    Bảo vệ content, chống copy nội dung web!

    Bảo vệ content, chống copy nội dung web!

    Lưu ý mệnh đề NOT IN trong SQL

    Lưu ý mệnh đề NOT IN trong SQL

    SOLID Principles: Dependency Inversion Principle

    SOLID Principles: Dependency Inversion Principle

    Solid Principles: Interface Segregation Principle

    Solid Principles: Interface Segregation Principle

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    IPC – Đằng sau sự thành công của Chromium

    IPC – Đằng sau sự thành công của Chromium

    Dựng layout website với CSS Grid Layout

    Dựng layout website với CSS Grid Layout

    Golang cơ bản (p1)

    Golang cơ bản (p1)

    Trending Tags

    • Idea
    • Lifestyle
    No Result
    View All Result
    • Home
    • News
    • Dev
      • All
      • Algorithm
      • Architecture
      • Database
      • Design
      • DevOps
      • IoT
      • Network
      • Test
      • Web
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      Bảo vệ content, chống copy nội dung web!

      Bảo vệ content, chống copy nội dung web!

      Lưu ý mệnh đề NOT IN trong SQL

      Lưu ý mệnh đề NOT IN trong SQL

      SOLID Principles: Dependency Inversion Principle

      SOLID Principles: Dependency Inversion Principle

      Solid Principles: Interface Segregation Principle

      Solid Principles: Interface Segregation Principle

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      IPC – Đằng sau sự thành công của Chromium

      IPC – Đằng sau sự thành công của Chromium

      Dựng layout website với CSS Grid Layout

      Dựng layout website với CSS Grid Layout

      Golang cơ bản (p1)

      Golang cơ bản (p1)

      Trending Tags

      • Idea
      • Lifestyle
      No Result
      View All Result
      DEVZONE
      No Result
      View All Result
      Home Dev Web

      Mã hóa Base64

      DiemND by DiemND
      November 28, 2019
      in Web
      0
      Mã hóa Base64

      Base64 là phương thức convert dạng mã hóa 2 chiều từ binary sang string để có thể gửi đi được trong network một cách dễ dàng. Các binary lúc này sẽ được thể hiện bằng các ký tự mã ASCII

      Lịch sử

      Năm 1993, John Linn công bố thuật toán mã hóa Base64 trong tài liệu: RFC 1421 – Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures. Tạm dịch: Tăng cường bảo mật thư điện tử: Phần I: Xác thực và mã hóa thông điệp.

      Sau đó, nó đã được sửa đổi một phần vào tháng 9 năm 1993 bởi N. Borenstein trong phần: RFC 1521 – MIME (Multipurpose Internet Mail Extensions) Part I: Mechanisms for Specifying and Describing the Format of Internet Message Bodies.

      Lịch sử của Base64 bắt đầu vào thời điểm khi các kỹ sư tranh luận có bao nhiêu bit trong một byte. Bây giờ chúng ta sử dụng một byte với 8 bit, nhưng trước đó đã được sử dụng một byte 7 bit, 6 bit và thậm chí 3 bit bởi vì tất cả các hệ thống lớn vào lúc đó đã tự định nghĩa, giao ước với nhau, cho đến ngày nay kỹ sư làm việc của một hệ thống lớn cũng có thể tự quy định một byte với bao nhiêu bít tùy vào hoàn cảnh họ muốn và đảm bảo sự ổn định của hệ thống. Vào thời điểm mã hóa 8 bit được công bố là một tiêu chuẩn, nhiều hệ thống đã sử dụng các tiêu chuẩn cũ và không hỗ trợ tiêu chuẩn mới. Điều này dẫn đến thực tế là một số dữ liệu đã bị mất trong quá trình chuyển đổi giữa hệ thống mới và hệ thống cũ. Ví dụ, một máy chủ thư điện tử có thể loại bỏ bit thứ 8 khi gửi mail, điều này là hoàn toàn không thể chấp nhận. Hơn nữa, có một vấn đề khác với các máy chủ thư điện tử là họ chỉ có thể gửi văn bản chứ không thể gửi dữ liệu nhị phân như: hình ảnh, video nói chung và tệp tin đa phương tiện nói riêng. Và vì vậy thuật toán Base64 được sinh ra để giải quyết những vấn đề này. Tất nhiên, theo thời gian, các bảng mã khác được phát triển, nhưng nhờ sự đơn giản và hiệu quả Base64 trở nên phổ biến nhất và được sử dụng ở hầu hết mọi nơi.

      Cơ chế hoạt động

      Cơ chế convert dữ liệu từ binary sang string bao gồm các bước sau:

      • Chia mã nhị phân thành các khối 24 bit từ trái qua phải
      • Mỗi đoạn 24 bit được nhóm thành bốn phần 6 bit mỗi phần. Nếu đoạn cuối cùng có số bit không chia hết cho 6, ta thêm các bit 0 ít nhất có thể vào cuối để chia hết. Sau khi chia hết ta được thương và tính padding = 4 – thương
      • Mỗi nhóm 6 bit được chuyển đổi thành các giá trị ký tự Base64 tương ứng của chúng. Nếu padding > 0, ta thêm n ký tự = vào cuối đoạn mã hóa, n = padding tính ở trên
      • Có thể đảo ngược quá trình trên để giải mã

      Bảng mã hóa Base64

      Ví dụ mã hóa string

      Ví dụ khi mã hóa ký tự M:

      • M được chuyển sang nhị phân qua bảng mã ASCII: 01001101 (77)
      • Do số bit ở đây khá ngắn (8) nên sau khi chia thành các đoạn 24 bit ta vẫn chỉ được: 01001101 là các bit dư ra ở cuối cùng
      • Ta cần thêm 4 bit 0 vào cuối để số bit chia hết cho 6, đoạn bit của ta bây giờ là: 010011010000 và padding = 4 – (12/6) = 2
      • Chia đoạn bit trên theo mỗi nhóm 6 bit: 010011 010000, chuyển qua mã thập phân ta được 19 và 16. Convert theo bảng mã hóa Base64 ta được 2 ký tự: TQ. Do padding = 2 nên kết quả cuối cùng là: TQ==

      Ứng dụng

      Base64 được sử dụng phổ biến nhất để mã hóa dữ liệu nhị phân, ví dụ: hình ảnh hoặc tệp âm thanh, … để nhúng vào HTML, CSS, EML và các tài liệu văn bản khác. Ngoài ra, Base64 được sử dụng để mã hóa dữ liệu có thể không được hỗ trợ hoặc bị hỏng trong quá trình truyền, lưu trữ.

      Thả tim (3 lượt thả tim)
      Loading...
      Previous Post

      Message queue - Thành phần giao tiếp của các ứng dụng

      Next Post

      Thuật toán cho người mới bắt đầu

      DiemND

      DiemND

      Next Post
      Thuật toán cho người mới bắt đầu

      Thuật toán cho người mới bắt đầu

      Leave a Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Recent News

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      July 25, 2020
      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      June 26, 2020
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      May 31, 2020
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      May 25, 2020
      DEVZONE

      Browse by Category

      • Algorithm
      • Architecture
      • Database
      • Design
      • Dev
      • DevOps
      • Idea
      • IoT
      • Lifestyle
      • Network
      • News
      • Test
      • Uncategorized
      • Web
      • About
      • Advertise
      • Privacy & Policy
      • Contact

      © 2019 Devzone

      No Result
      View All Result

      © 2019 Devzone