Როგორ Base64 კოდირების სამუშაოები

თუ ინტერნეტით არის ინტერნეტის გზა, მაშინ გზავნილის გზა ვიწრო ხევშია. მხოლოდ ძალიან მცირე ავტომობილები შეიძლება გაიარონ.

ელფოსტის სატრანსპორტო სისტემა განკუთვნილია ჩვეულებრივი ASCII ტექსტისთვის. სხვა ენათა ან თვითნებური ფაილების გაგზავნის მცდელობა ხომ არ არის სატვირთო მანქანით.

როგორ მიდის დიდი სატვირთო წვიმის გზას?

მაშინ როგორ გადაგიგზავნით დიდ სატვირთო მანქანას მცირე ხევში? თქვენ უნდა მიიღოს იგი ცალი ერთ ბოლომდე, ტრანსპორტირება ცალი მეშვეობით ხევში, და აღადგინოს სატვირთო საწყისი ცალი მეორე ბოლომდე.

იგივე მოხდება, როდესაც ელ-ფოსტის საშუალებით აგზავნით ფაილს . პროცესი, რომელიც ცნობილია როგორც ორობითი მონაცემების კოდირება, ASCII ტექსტში გარდაიქმნება, რომელიც შეიძლება ელფოსტით ტრანსპორტირება პრობლემების გარეშე. მიმღების დასასრულს, მონაცემები დეკოდირებულია და ორიგინალი ფაილი აღდგენილია.

ASCII- ის ტექსტის კოდირების ერთ-ერთი მეთოდია ბაზა 64. ეს არის MIME სტანდარტით დასაქმებული ერთ-ერთი მეთოდი, რომელიც ჩვეულებრივი ტექსტის გარდა სხვა მონაცემებს გაგზავნის.

Base64 სამაშველო

Base64 კოდირება სამი ბაიტს იღებს, თითოეული შედგება რვა ბიტი, და წარმოადგენს მათ ASCII სტანდარტის ოთხ დასაბეჭდი სიმბოლოს. ეს იმას აკეთებს, რომ არსებითად ორი ნაბიჯი.

პირველი ნაბიჯი არის სამი ბიტის კონვერტაცია ექვსი ბიტის ოთხი ნომრით. თითოეული პერსონაჟი ASCII სტანდარტში შედგება შვიდი ბიტისგან. Base64 მხოლოდ იყენებს 6 ბიტს (შეესაბამება 2 ^ 6 = 64 სიმბოლოს), რათა უზრუნველყონ კოდირებული მონაცემების დასაბეჭდად და დასაბუთებული ადამიანები. გამოიყენება ASCII- ში არსებული არცერთი სპეციალური სიმბოლო.

64 სიმბოლო (აქედან გამომდინარე სახელი Base64) არის 10 ციფრი, 26 პატარა ასოები, 26 დიდი ასოები, ასევე '+' და '/'.

მაგალითად, სამი ბაიტი არის 155, 162 და 233, შესაბამისი (და საშიში) ბიტიანი ნაკადი არის 100110111010001011101001, რაც, თავის მხრივ, შეესაბამება 6-ბიტიან ღირებულებებს 38, 58, 11 და 41.

ეს ციფრები გადაკეთდა ASCII სიმბოლოებს მეორე ნაბიჯში Base64 კოდირების ცხრილის გამოყენებით. ჩვენი მაგალითის 6-ბიტიანი მნიშვნელობა ASCII თანმიმდევრობით "m6Lp" - ს გადაეცემა.

ეს ორმხრივი პროცესი გამოყენებულია ბაიტების მთლიანი თანმიმდევრობით, რომლებიც encoded. კოდირებადი მონაცემების უზრუნველსაყოფად სწორად დაბეჭდილი და არ უნდა აღემატებოდეს ფოსტის სერვერის ხაზის სიგრძე ლიმიტი, ახალი ასოები შეიტანება, რათა შეესაბამებოდეს 76 სიმბოლოს. ახლებური სიმბოლოები encoded როგორც ყველა სხვა მონაცემები.

გადაჭრის Endgame

დასასრულს კოდირების პროცესი, ჩვენ შეიძლება გადაეყარონ პრობლემა. თუ ორიგინალური მონაცემების ზომა ბაიტებში არის სამივე, ყველაფერი კარგად მუშაობს. თუ ეს არ არის, ჩვენ შეიძლება დასრულდეს ერთი ან ორი 8-ბიტიანი ბაიტი. სათანადო კოდირებისთვის საჭიროა მხოლოდ სამი ბაიტი.

გამოსავალი არის საკმარისი ბაიტების დამატება '0' ღირებულებით, რათა შეიქმნას 3-ბიტიანი ჯგუფი. ორი ასეთი ღირებულების დამატებაა, თუ ჩვენ გვაქვს ერთი დამატებითი ბაიტი მონაცემები, ერთი დაემატება ორი დამატებითი ბაიტი.

რა თქმა უნდა, ეს ხელოვნური გადმომავალი 0'- ს არ შეიძლება იყოს კოდირებული ცხრილის გამოყენებით. მათ უნდა წარმოადგინონ 65-ე ხასიათი.

Base64 padding ხასიათი არის '='. ბუნებრივია, ეს მხოლოდ ოდესმე გამოჩნდება დასასრულს encoded მონაცემები.

Base64 კოდირების მაგიდა

ღირებულება Char ღირებულება Char ღირებულება Char ღირებულება Char
0 16 კითხვა 32 48 w
1 17 33 49 x
2 18 34 მე 50 y
3 19 35 51
4 20 U 36 52 0
5 F 21 V 37 53 1
6 22 38 54 2
7 23 X 39 n 55 3
8 მე 24 40 56 4
9 25 41 გვ 57 5
10 26 42 58 6
11 27 43 59 7
12 28 44 s 60 8
13 29 45 61 9
14 30 46 u 62 +
15 31 47 v 63 /