რა არის ეს ხელსაწყო?
Base64 არის კოდირების სქემა, რომელიც ორობით ან ტექსტურ მონაცემებს გარდაქმნის 64 უსაფრთხო ASCII სიმბოლოს ნაკრებად (A–Z, a–z, 0–9, + და /). იგი ყველგან გამოიყენება პროგრამულ უზრუნველყოფაში: სურათების ჩასმა HTML/CSS-ში, HTTP Basic ავთენტიფიკაციის სათაურები, ელფოსტის დანართები (MIME), JSON Web Tokens, და API მონაცემები, რომლებმაც მხოლოდ ტექსტური არხებით უნდა გაიარონ.
მნიშვნელოვანია: Base64 არის კოდირება და არა დაშიფვრა. ნებისმიერს შეუძლია მისი გაშიფვრა. მისი დანიშნულებაა, გახადოს მონაცემები უსაფრთხო გადასაცემად ისეთ სისტემებში, რომლებიც მხოლოდ ტექსტს იაზრებენ — და არა შეინახოს ისინი საიდუმლოდ.
Base64 ოფიციალურად აღწერილია RFC 4648-ში, რომელიც ასევე განსაზღვრავს URL-უსაფრთხო ვარიანტს, გამოყენებულს JWT-ებსა და ვებ API-ებში: იგი + სიმბოლოს ცვლის - სიმბოლოთი, ხოლო / სიმბოლოს — _ სიმბოლოთი, რათა დაკოდირებულმა სტრიქონმა URL-ის შიგნით პროცენტული კოდირების გარეშე ივლოს.
რატომ გამოვიყენო ის?
- გაშიფრეთ API ტოკენები, JWT სეგმენტები და ავთენტიფიკაციის სათაურები, რომ ნახოთ, რა არის შიგნით.
- დაშიფრეთ ტექსტი data URI-ებისთვის, კონფიგურაციის ფაილებისთვის ან HTTP სათაურებისთვის.
- უსაფრთხო UTF-8-სთვის: ემოჯები და არალათინური სიმბოლოები სწორად კოდირდება და გაშიფრდება.
- 100% კონფიდენციალური — გარდაქმნა ხდება თქვენს ბრაუზერში, არაფერი იტვირთება.
- უფასო, ავტორიზაციის გარეშე, ზომის შეზღუდვების გარეშე.
როგორ გამოვიყენო
- აკრიფეთ ან ჩასვით თქვენი შემცველობა შესატანი ველში.
- დააჭირეთ "დაშიფვრა"-ს ტექსტის Base64-ად გადასაყვანად, ან "გაშიფვრა"-ს Base64-ის ისევ ტექსტად გადასაყვანად.
- თუ გაშიფვრა ვერ ხერხდება, შესატანი არ არის ვალიდური Base64 — შეამოწმეთ, ხომ არ აკლია სიმბოლოები ან ხომ არ არის ზედმეტი ხარვეზები.
- დააჭირეთ "კოპირება"-ს შედეგის დასაკოპირებლად.
მაგალითი
შეყვანა
Hello, CodeKitHub! 你好 👋შედეგი
SGVsbG8sIENvZGVLaXRIdWIhIOS9oOWlvSDwn5GLყურადღება მიაქციეთ, როგორ გადარჩება ჩინური სიმბოლოები და ემოჯი წრიულ გარდაქმნას — ეს არის UTF-8-უსაფრთხო ნაწილი.
პრაქტიკული რჩევები
- JWT ტოკენები არის სამი Base64 სეგმენტი, წერტილებით შეერთებული — გაშიფრეთ პირველი ორი (სათაური და დატვირთვა) ცალ-ცალკე მათ წასაკითხად; მესამე არის ორობითი ხელმოწერა და ხმაურივით გამოიყურება.
- თუ JWT სეგმენტის გაშიფვრა ვერ ხერხდება, ეს base64url კოდირებაა: ჯერ შეცვალეთ - სიმბოლო +-ით და _ სიმბოლო /-ით (სტანდარტული ხელსაწყოები +/ ანბანს ელოდებიან).
- Base64 სტრიქონში არსებული ხარვეზები და ხაზების გადატანები ჩვეულებრივ ელფოსტიდან ან ლოგებიდან დარჩენილი უვნებელი ნაშთებია, მაგრამ ბოლო = შევსების ნაკლებობა ხშირად ასე არ არის — შეამოწმეთ სიგრძე, სანამ დაასკვნით, რომ მონაცემები დაზიანებულია.
- Base64 მონაცემებს დაახლოებით 33%-ით ზრდის. მცირე დატვირთვებისთვის ეს კარგია; რამდენიმე KB-ზე მეტი სურათებისთვის ნამდვილი ფაილი თითქმის ყოველთვის data URI-ზე უკეთესი არჩევანია.
რეალური გამოყენების სცენარები
სამი შემთხვევა, რომლებიც ადამიანებს ყოველდღიურად აქეთ მოჰყავს: Authorization სათაურის ან JWT-ის შემცველობის წაკითხვა, webhook/API დატვირთვის ველის გაშიფვრა, რომელიც Base64-ში გახვეული ჩამოვიდა (ხშირად JSON — დაფორმატეთ გაშიფვრის შემდეგ), და data URI-ის ან Basic-Auth სტრიქონის ხელით შექმნა გამართვისას.
ორობითი მონაცემებისთვის (სურათები, ფაილები) გახსოვდეთ, რომ ტექსტად გაშიფვრისას მიიღებთ ურო-კუროს (mojibake) — მონაცემები შესაძლოა სავსებით ვალიდური იყოს, უბრალოდ ტექსტი არ არის. ორობითი მონაცემების კოდირება/გაშიფვრა კოდის საქმეა; ეს ხელსაწყო ოპტიმიზირებულია ტექსტური შემთხვევებისთვის.
როგორ დავადგინოთ გაშიფვრის შეცდომის მიზეზი
Base64 გაშიფვრის შეცდომები თითქმის ყოველთვის სამი მიზეზიდან ერთს უკავშირდება, სიხშირის მიხედვით: შესატანი სინამდვილეში base64url იყო (იყენებს - და _ სიმბოლოებს სტანდარტული + და / სიმბოლოების ნაცვლად, რაც ხშირია JWT-ებსა და URL-უსაფრთხო კონტექსტებში) და საჭიროებს ამ სიმბოლოების უკან შეცვლას, სანამ სტანდარტული გაშიფვრა მიიღებდეს მას; სტრიქონი სადღაც გზაში შემოკლდა (კოპირება-ჩასმამ ბოლო რამდენიმე სიმბოლო გამოტოვა, ან ლოგის ხაზი გაწყდა), რაც აღმოსაჩენია, რადგან ვალიდური Base64 სტრიქონის სიგრძე ყოველთვის 4-ის ჯერადია შევსების გათვალისწინების შემდეგ; ან ერთეული სიმბოლოები (ზედმეტი ხარვეზი, შემთხვევითი ახალი ხაზი, შემთხვევით გაორმაგებული სიმბოლო) კოპირებისას შემოვიდა, რის გამოც პირდაპირ საწყისი წყაროდან ჩასმა ხელახლა აკრეფას ყოველთვის სჯობს.
→
ხშირად დასმული კითხვები
არის თუ არა Base64 დაშიფვრა?
არა. Base64 არის შექცევადი კოდირება, რომლის გაშიფვრაც ნებისმიერს შეუძლია — ის არანაირ უსაფრთხოებას არ იძლევა. თუ მონაცემების დაცვა გჭირდებათ, გამოიყენეთ ნამდვილი დაშიფვრა (მაგალითად, AES); Base64 მხოლოდ მონაცემების ტექსტად გადატანის უსაფრთხოებისთვისაა.
რატომ გამოიყურება ჩემი გაშიფრული შედეგი უაზრო ტექსტად?
ან შესატანი სინამდვილეში არ არის Base64, ან ის შემოკლებულია, ან საწყისი მონაცემები ორობითი იყო (მაგალითად, სურათი) და არა ტექსტი. ორობითი მონაცემები არ გამოჩნდება როგორც წაკითხვადი სიმბოლოები.
რას ნიშნავს ბოლოში მდგარი = ნიშნები?
შევსება (padding). Base64 მუშაობს 3 შემავალი ბაიტის ბლოკებით → 4 გამომავალ სიმბოლოდ. როცა შესატანის სიგრძე არ იყოფა 3-ზე, ერთი ან ორი = სიმბოლო ავსებს ბოლო ბლოკს.
მუშაობს თუ არა ეს ხელსაწყო ემოჯებთან და ჩინურ სიმბოლოებთან?
დიახ. ის ჯერ ტექსტს UTF-8 ბაიტებად კოდირებს, რაც სტანდარტული მიდგომაა. მარტივი ხელსაწყოები, რომლებიც პირდაპირ btoa()-ს იყენებენ, ვერ ართმევენ თავს Latin-1-ის მიღმა ნებისმიერ სიმბოლოს — ეს ხელსაწყო კი უმკლავდება.
იტვირთება თუ არა ჩემი მონაცემები სადმე?
არა. კოდირება და გაშიფვრა მთლიანად ხდება თქვენს ბრაუზერში JavaScript-ის მეშვეობით. თქვენი მონაცემები არასდროს ტოვებს თქვენს მოწყობილობას.