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

Სარჩევი:

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

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

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

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

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

Image
Image

ამ ტიპის ორობითი მონაცემების დაშიფვრის ერთ-ერთი მეთოდი, რომელიც თავიდან აიცილებს გადაცემის ასეთ პრობლემებს, არის მისი გაგზავნა ჩვეულებრივი 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-ე სიმბოლო, რომელიც ცნობილია როგორც 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: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

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

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

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

  • 38 არის m
  • 58 არის 6
  • 11 არის L
  • 41 არის p

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

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

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

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

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

Base64 კოდირების ცხრილი
მნიშვნელობა Char მნიშვნელობა Char მნიშვნელობა Char მნიშვნელობა Char
0 A 16 Q 32 48 w
1 B 17 R 33 სთ 49 x
2 C 18 S 34 i 50
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 53 1
6 G 22 W 38 54 2
7 H 23 X 39 55 3
8 მე 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

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

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

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

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

გირჩევთ: