რა არის Base64 და რატომ არსებობს ის
Base64 ორობითი მონაცემების ტექსტად კოდირების სქემაა. ის იღებს ნედლ ბაიტებს — იმგვარ მონაცემებს, საიდანაც შედგება სურათები, არქივები, კრიპტოგრაფიული გასაღებები ან ნებისმიერი სხვა, ჩვეულებრივ ტექსტად წაუკითხავი შინაარსი — და გადაწერს მათ 64 ბეჭდვადი სიმბოლოს პატარა, უსაფრთხო ანბანით: 26 დიდი ასო A-Z-მდე, 26 პატარა ასო a-z-მდე, ათი ციფრი 0-9-მდე და ორი დამატებითი სიმბოლო, ჩვეულებრივ + და /. თანასწორობის ნიშანი ბოლოში შევსებისთვის გამოიყენება. რადგან ყოველი სიმბოლო, რომელსაც ის აწარმოებს, ჩვეულებრივი ASCII-ია, შედეგს შეუძლია გაიაროს ისეთი სისტემებით, რომლებიც მხოლოდ ტექსტის დასამუშავებლად იყო შექმნილი.
სწორედ ეს არის Base64-ის შექმნის მთელი მიზეზი. ბევრი ძველი პროტოკოლი — ელფოსტა ამის კლასიკური მაგალითია — ვარაუდობს, რომ მისით გადატანილი შინაარსი ტექსტია. თუ მას ნედლ ორობით მონაცემებს გადასცემთ, ზოგიერთი ბაიტი დაზიანდება, ამოიღება ან საკონტროლო სიმბოლოდ იქნება ინტერპრეტირებული, და მონაცემები დაზიანებული ჩამოვა. Base64 ამ პრობლემას ისე უვლის გვერდს, რომ ბაიტებს ისეთ ფორმად გარდაქმნის, რომელსაც ნებისმიერი ტექსტ-უსაფრთხო არხი დაუბრკოლებლად გაატარებს. საწყისი მონაცემები კი მეორე მხარეს ზუსტად აღდგება.

როგორ მუშაობს გარდაქმნა
მექანიკურად, Base64 შემავალ მონაცემებს სამბაიტიან ბლოკებად ჯგუფავს — ესაა 24 ბიტი — და შემდეგ ამ იმავე 24 ბიტს ოთხ ექვსბიტიან ჯგუფად ანაწილებს. ექვსი ბიტი 64 შესაძლო მნიშვნელობის გამოსახვას შეუძლია, სწორედ ამიტომ აქვს ანბანს 64 სიმბოლო. ასე რომ, სამი შემავალი ბაიტი ყოველთვის ოთხ გამომავალ სიმბოლოდ იქცევა. როცა შემავალი მონაცემის სიგრძე სამის ჯერადი არ არის, კოდირების პროცესი ბოლო ჯგუფს ერთი ან ორი = სიმბოლოთი ავსებს, რომ დეშიფრატორმა იცოდეს, სად მთავრდება რეალური მონაცემი.
სწორედ ეს ოთხი ოთხისთვის სამი პროპორცია ხდება ცნობილი ზომის „ჯარიმის" წყაროც: Base64-ის გამონატანი დაახლოებით 33%-ით მეტია საწყის მონაცემზე. თუ დაკოდირებული ტექსტი ფიქსირებული სიგანის ხაზებად იფუთება, როგორც ხშირად მოითხოვს ელფოსტის სტანდარტები, ხაზების გადატანისთვის კიდევ რამდენიმე პროცენტი ემატება ამას. ეს ხარჯი თავსებადობის ფასია, და უმეტესობის შემთხვევაში ეს სამართლიანი გარიგებაა.
სად ხვდებით Base64-ს
როცა იცით, რას ეძებთ, Base64 ყოველდღიური კომპიუტინგის ყველგან ჩნდება:
- Data URI-ები. პატარა სურათი ან შრიფტი შეიძლება პირდაპირ ჩაისვას HTML-ში ან CSS-ში
data:URI-ის საშუალებით, სადაც ფაილის შიგთავსი Base64-ად არის ჩაწერილი. ბრაუზერი ამას ადგილზევე შიფრავს, რაც ცალკე ქსელურ მოთხოვნას ზოგავს. - ელფოსტის დანართები. MIME, სტანდარტი, რომელიც ელფოსტას ორობითი ფაილების გადატანის უფლებას აძლევს, Base64-ს ეყრდნობა, რომ ორობითი დანართები მხოლოდ-ტექსტურ საფოსტო სისტემაში დაუზიანებლად გაატაროს.
- HTTP Basic ავთენტიფიკაცია. ნაცნობი
Authorization: Basic ...სათაური უბრალოდ მომხმარებლის სახელი და პაროლია, ორწერტილით შეერთებული და Base64-ად კოდირებული — სწორედ ამიტომ უნდა მუშაობდეს Basic auth ყოველთვის HTTPS-ზე. - ტოკენები და კონფიგურაცია. JSON Web Token-ები, სერტიფიკატები, SSH გასაღებები და უამრავი კონფიგურაციის მნიშვნელობა Base64-ად ინახება ან გადაიცემა, რომ დააკოპირო-ჩასვა ოპერაციები და ტექსტურ ფორმატში შენახვა უსაფრთხოდ გადაუტანონ.
კოდირება არ არის დაშიფვრა
ეს ერთადერთი ყველაზე მნიშვნელოვანი რამაა გასაგებად, და ის დამწყებებსაც აბნევს და გამოცდილ დეველოპერებსაც. Base64 არ არის დაშიფვრა და არანაირ უსაფრთხოებას არ იძლევა. მას არ აქვს საიდუმლო გასაღები, პაროლი, არაფერი კონფიდენციალური. გარდაქმნა სრულად საჯარო და სრულად შექცევადია: ვინც Base64 სტრიქონს ხედავს, მას წამში დაშიფვრავს საწყის ბაიტებად, ზუსტად ისეთივე ხელსაწყოთი, როგორიც ეს არის.
ასე რომ, Base64 ცუდი დამალვის ადგილია პაროლებისთვის, API გასაღებებისთვის ან ნებისმიერი მგრძნობიარე მნიშვნელობისთვის. თუ სტრიქონი უბრალოდ ჰგავს გადაშიფრულს, ეს არ ნიშნავს, რომ ის დაცულია. დაშიფვრა, ამის საპირისპიროდ, საიდუმლო გასაღებით გარდაქმნის მონაცემებს, ისე რომ მხოლოდ ამ გასაღების მფლობელს შეუძლია მისი წაკითხვა. ეს ორი განსხვავებულ პრობლემას წყვეტს: დაშიფვრა კონფიდენციალურობას იცავს, Base64 კი — თავსებადობას. ხშირად ისინი ერთად გამოიყენება — შეიძლება მონაცემები AES-ით დაშიფროთ და შემდეგ დაშიფრული ტექსტი Base64-ად დაკოდიროთ, რომ ტექსტურ არხში გატარდეს — მაგრამ ერთი მეორეს არასდროს ანაცვლებს.

კოდირება და დეკოდირება
ეს ორი მიმართულება უბრალო სარკისებრი ასახვაა. კოდირება იღებს თქვენს საწყის ტექსტს ან ორობით მონაცემს და აწარმოებს Base64 სიმბოლოთა სტრიქონს. დეკოდირება იღებს Base64 სტრიქონს და აღადგენს ზუსტად საწყის ბაიტებს. ჩვენი ხელსაწყო ორივეს პირდაპირ თქვენს ბრაუზერში აკეთებს — არაფერი, რასაც აკრიფავთ ან ჩასვამთ, არასდროს იგზავნება სერვერზე, ასე რომ, ოპერაცია მთლიანად ლოკალური და კონფიდენციალურია. ეს უსაფრთხოს ხდის იმ ტოკენის დეშიფრვას, რომელსაც აღმოაჩენთ, ან იმ ფრაგმენტის დაშიფვრას, რომლის ჩასმაც გსურთ — თქვენი მონაცემები გვერდს არასდროს ტოვებს.
დაკავშირებული გარდაქმნებისთვის იხილეთ ჩვენი URL კოდირება/დეკოდირება ხელსაწყო პროცენტული კოდირებისთვის, ან JWT დეკოდერი, როცა ტოკენში ჩაშენებული Base64 სეგმენტების შემოწმება გჭირდებათ. ისინი ჩვენი დანარჩენი დეველოპერული ხელსაწყოების გვერდით იმყოფება.
ხშირად დასმული კითხვები
არის Base64 დაშიფვრის ფორმა?
არა. Base64 კოდირებაა, არა დაშიფვრა. ის არ იყენებს გასაღებს და ნებისმიერს შეუძლია მისი სრული შექცევა, ასე რომ, ის არანაირ უსაფრთხოებას არ იძლევა. მგრძნობიარე მონაცემების დასაცავად გამოიყენეთ ნამდვილი დაშიფვრა, როგორიცაა AES ან RSA.
რატომ ზრდის Base64 მონაცემების ზომას?
Base64 ყოველ სამ შემავალ ბაიტს ოთხ გამომავალ სიმბოლოდ აქცევს, რაც ზომას დაახლოებით 33%-ით ზრდის. თუ გამონატანი ფიქსირებული სიგრძის ხაზებადაა დაყოფილი, ხაზების გადატანა კიდევ რამდენიმე პროცენტს ამატებს.
რა სიმბოლოებს იყენებს Base64?
სტანდარტული ანბანია 26 დიდი ასო, 26 პატარა ასო, ციფრები 0-დან 9-მდე, პლუს სიმბოლოები „პლუსი" და „ხაზი დახრილი", თანასწორობის ნიშნით ბოლოში შევსებისთვის.
შემიძლია პაროლების უსაფრთხოდ შენახვა Base64-ში?
არა. Base64 მხოლოდ ცვლის, როგორ გამოიყურება მონაცემი — და არა, ვინც მის წაკითხვას შეძლებს. ნებისმიერს შეუძლია მისი მყისვე დეშიფვრა. პაროლები ძლიერი ალგორითმით უნდა იყოს ჰეშირებული, ხოლო საიდუმლოებები — დაშიფრული.
კონფიდენციალურია ეს Base64 ხელსაწყო?
დიახ. კოდირება და დეკოდირება მთლიანად თქვენს ბრაუზერში ხდება. არაფერი, რასაც შეიყვანთ, არ იტვირთება ან იგზავნება რაიმე სერვერზე, ასე რომ, თქვენი მონაცემები თქვენსავე მოწყობილობაზე რჩება.
რა განსხვავებაა კოდირებასა და დეკოდირებას შორის?
კოდირება საწყის ტექსტს ან ორობით მონაცემს Base64 სტრიქონად გარდაქმნის. დეკოდირება ამის საპირისპიროს აკეთებს — Base64 სტრიქონს ისევ ზუსტად საწყის ბაიტებად აქცევს. ისინი ერთმანეთის სარკისებრი ოპერაციაა.
