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

Base64 კოდირება არის ორობითი მონაცემების ASCII სტრიქონების ფორმატში გადაყვანის პროცესი ამ ბინარული მონაცემების 6-ბიტიან სიმბოლოებად გადაქცევით. Base64 კოდირების მეთოდი გამოიყენება, როდესაც ორობითი მონაცემები, როგორიცაა სურათები ან ვიდეო, გადაიცემა სისტემებზე, რომლებიც შექმნილია მონაცემთა გადასაცემად უბრალო ტექსტის (ASCII) ფორმატში.

რატომ გამოიყენება Base64 კოდირება?

Base64 კოდირების საჭიროება გამოწვეულია იმ პრობლემებით, რომლებიც წარმოიქმნება მედიის გადაცემისას ნედლეული ორობითი ფორმატი ტექსტზე დაფუძნებული სისტემებისთვის.

ვინაიდან ტექსტზე დაფუძნებული სისტემები (როგორც ელ) ორობითი მონაცემების ინტერპრეტაცია, როგორც სიმბოლოების ფართო სპექტრი, მათ შორის სპეციალური ბრძანების სიმბოლოები, ბინარული მონაცემების დიდი ნაწილი რომელიც გადაცემულია სატრანსფერო მედიაში არასწორად არის განმარტებული ამ სისტემების მიერ და დაკარგული ან დაზიანებულია გადაცემაში პროცესი.

კაცი კომპიუტერის კოდს უყურებს ეკრანზე
Wutthichai Luemuang / EyeEm / Getty Images

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

ბევრი პროგრამირების ენა, როგორიცაა PHP და Javascript, მოიცავს Base64 კოდირების და დეკოდირების ფუნქციებს, რათა მოხდეს მონაცემთა ინტერპრეტაცია Base64 კოდირების გამოყენებით.

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

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

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

64 სიმბოლო (აქედან გამომდინარე, სახელწოდება Base64) არის 10 ციფრი, 26 პატარა, 26 დიდი სიმბოლო, ასევე პლუს ნიშანი (+) და წინ დახრილი (/). ასევე არის 65-ე პერსონაჟი, რომელიც ცნობილია როგორც a pad, რომელიც არის ტოლობის ნიშანი (=). ეს სიმბოლო გამოიყენება, როდესაც ბინარული მონაცემების ბოლო სეგმენტი არ შეიცავს სრულ 6 ბიტს.

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

მაგალითად, აიღეთ სამი ASCII ნომერი 155, 162 და 233. ეს სამი რიცხვი წარმოადგენს 100110111010001011101001 ორობით ნაკადს. ორობითი ფაილი, სურათის მსგავსად, შეიცავს ორობით ნაკადს, რომელიც გადის ათობით ან ასობით ათასი ნულისა და ერთისთვის.

Base64 ენკოდერი იწყება ბინარული ნაკადის დაყოფით ექვსი სიმბოლოს დაჯგუფებად: 100110 111010 001011 101001. თითოეული ეს დაჯგუფება ითარგმნება 38, 58, 11 და 41 რიცხვებში.

ექვსსიმბოლოიანი ორობითი ნაკადი გარდაქმნის ორობით (ან ფუძე-2) შორის ათწილად (ბაზის-10) სიმბოლოებს, ყოველი მნიშვნელობის კვადრატში, რომელიც წარმოდგენილია ორობითი მიმდევრობით 1-ით მის პოზიციურ კვადრატთან. მარჯვნიდან დაწყებული და მარცხნივ გადაადგილება და ნულიდან დაწყებული, ორობითი ნაკადის მნიშვნელობები წარმოადგენს 2^0, შემდეგ 2^1, შემდეგ 2^2, შემდეგ 2^3, შემდეგ 2^4, შემდეგ 2^5.

აქ არის სხვა გზა, რომ შევხედოთ მას. მარცხნიდან დაწყებული, თითოეული პოზიცია ღირს 1, 2, 4, 8, 16 და 32. თუ ორობით რიცხვს აქვს 1 სლოტში, თქვენ დაამატეთ ეს მნიშვნელობა; თუ მას აქვს 0 სლოტში, თქვენ არ გაქვთ. ორობითი სტრიქონი 100110 გარდაიქმნება ათობითი რიცხვად 38: 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+2 +4+0+0+32.

Base64 კოდირება იღებს ამ ორობით სტრიქონს და ანაწილებს მას 6-ბიტიან მნიშვნელობებად 38, 58, 11 და 41.

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

Base64 კონვერტაციის ცხრილის გამოყენებით:

  • 38 არის მ
  • 58 არის 6
  • 11 არის ლ
  • 41 არის გვ

ეს ორეტაპიანი პროცესი გამოიყენება მთელ ორობით სტრიქონზე, რომელიც კოდირებულია.

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

Base64 კოდირების მთელი დანიშნულება, შიგთავსის დამატებით 3-ბაიტიანი ორობითი სეგმენტების შესანარჩუნებლად ბინარის ტექსტად გადაქცევა Base64 ცხრილის გამოყენებით არის გადაცემული ბინარის მთლიანობის შენარჩუნება ინფორმაცია.

Base64 კოდირების ცხრილი

შემდეგი ცხრილი თარგმნის ყველა 64 სიმბოლოს, რომელიც გამოიყენება Base64 კოდირებაში.

Base64 კოდირების ცხრილი
ღირებულება ჩარ ღირებულება ჩარ ღირებულება ჩარ ღირებულება ჩარ
0 16 32 48
1 17 33 49 x
2 C 18 34 მე 50
3 19 35 51
4 20 U 36 52 0
5 21 37 53 1
6 22 38 54 2
7 23 X 39 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 60 8
13 29 45 61 9
14 30 46 u 62 +
15 31 47 63 /

ბოლო თამაშის ამოხსნა

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

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

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