Κωδικοποιητής και Αποκωδικοποιητής Base64: Μετατροπή Κειμένου σε/από Base64
Δωρεάν διαδικτυακό εργαλείο για την κωδικοποίηση κειμένου σε Base64 ή την αποκωδικοποίηση συμβολοσειρών Base64 πίσω σε κείμενο. Υποστηρίζει την κανονική και ασφαλή για URL κωδικοποίηση Base64 με άμεση μετατροπή.
Κωδικοποιητής/Αποκωδικοποιητής Base64
Τεκμηρίωση
Κωδικοποιητής και Αποκωδικοποιητής Base64
Εισαγωγή
Το Base64 είναι ένα σχήμα κωδικοποίησης δυαδικών προς κείμενο που αναπαριστά δυαδικά δεδομένα σε μορφή ASCII. Είναι σχεδιασμένο να μεταφέρει δεδομένα που αποθηκεύονται σε δυαδικές μορφές μέσω καναλιών που υποστηρίζουν αξιόπιστα μόνο περιεχόμενο κειμένου. Η κωδικοποίηση Base64 μετατρέπει τα δυαδικά δεδομένα σε ένα σύνολο 64 χαρακτήρων (γι' αυτό και το όνομα) που μπορούν να μεταδοθούν με ασφάλεια μέσω κειμενικών πρωτοκόλλων χωρίς διαφθορά δεδομένων.
Το σύνολο χαρακτήρων Base64 αποτελείται από:
- Κεφαλαία γράμματα A-Z (26 χαρακτήρες)
- Μικρά γράμματα a-z (26 χαρακτήρες)
- Ψηφία 0-9 (10 χαρακτήρες)
- Δύο επιπλέον χαρακτήρες, συνήθως "+" και "/" (2 χαρακτήρες)
Αυτό το εργαλείο σας επιτρέπει να κωδικοποιείτε εύκολα κείμενο σε μορφή Base64 ή να αποκωδικοποιείτε συμβολοσειρές Base64 πίσω στο αρχικό τους κείμενο. Είναι ιδιαίτερα χρήσιμο για προγραμματιστές, επαγγελματίες IT και οποιονδήποτε εργάζεται με δεδομένα που πρέπει να μεταδοθούν με ασφάλεια μέσω κειμενικών καναλιών. Με τη δυνατότητα άμεσης μετατροπής μας, μπορείτε να δείτε αμέσως τα αποτελέσματα καθώς πληκτρολογείτε, κάνοντάς την εργασία σας με την κωδικοποίηση και αποκωδικοποίηση πιο αποδοτική.
Πώς Λειτουργεί η Κωδικοποίηση Base64
Διαδικασία Κωδικοποίησης
Η κωδικοποίηση Base64 λειτουργεί μετατρέποντας κάθε ομάδα τριών byte (24 bits) δυαδικών δεδομένων σε τέσσερις χαρακτήρες Base64. Η διαδικασία ακολουθεί τα εξής βήματα:
- Μετατρέψτε το εισαγόμενο κείμενο στην δυαδική του αναπαράσταση (χρησιμοποιώντας κωδικοποίηση ASCII ή UTF-8)
- Ομαδοποιήστε τα δυαδικά δεδομένα σε κομμάτια των 24 bits (3 byte)
- Χωρίστε κάθε κομμάτι 24 bits σε τέσσερις ομάδες των 6 bits
- Μετατρέψτε κάθε ομάδα 6 bits στον αντίστοιχο χαρακτήρα Base64
Όταν το μήκος της εισόδου δεν είναι διαιρετό με το 3, προστίθεται padding με χαρακτήρες "=" για να διατηρηθεί η αναλογία 4:3 των μήκους εξόδου προς μήκος εισόδου.
Μαθηματική Αναπαράσταση
Για μια ακολουθία byte , οι αντίστοιχοι χαρακτήρες Base64 υπολογίζονται ως:
Όπου αναπαριστά τον -οστό χαρακτήρα στο αλφάβητο Base64.
Διαδικασία Αποκωδικοποίησης
Η αποκωδικοποίηση Base64 αντιστρέφει τη διαδικασία κωδικοποίησης:
- Μετατρέψτε κάθε χαρακτήρα Base64 στην τιμή 6 bits του
- Συγκεντρώστε αυτές τις τιμές 6 bits
- Ομαδοποιήστε τα bits σε κομμάτια των 8 bits (byte)
- Μετατρέψτε κάθε byte στον αντίστοιχο χαρακτήρα του
Padding
Όταν ο αριθμός των byte που πρέπει να κωδικοποιηθούν δεν είναι διαιρετός με το 3, εφαρμόζεται padding:
- Αν υπάρχει ένα byte που απομένει, μετατρέπεται σε δύο χαρακτήρες Base64 ακολουθούμενους από "=="
- Αν υπάρχουν δύο byte που απομένουν, μετατρέπονται σε τρεις χαρακτήρες Base64 ακολουθούμενους από "="
Παράδειγμα
Ας κωδικοποιήσουμε το κείμενο "Hello" σε Base64:
- Αναπαράσταση ASCII του "Hello": 72 101 108 108 111
- Δυαδική αναπαράσταση: 01001000 01100101 01101100 01101100 01101111
- Ομαδοποίηση σε κομμάτια 6 bits: 010010 000110 010101 101100 011011 000110 1111
- Το τελευταίο κομμάτι έχει μόνο 4 bits, οπότε προσθέτουμε padding με μηδενικά: 010010 000110 010101 101100 011011 000110 111100
- Μετατροπή σε δεκαδικό: 18, 6, 21, 44, 27, 6, 60
- Αναζητώντας στο αλφάβητο Base64: S, G, V, s, b, G, 8
- Το αποτέλεσμα είναι "SGVsbG8="
Σημειώστε το "=" padding στο τέλος επειδή το μήκος εισόδου (5 byte) δεν είναι διαιρετό με το 3.
Τύπος
Ο γενικός τύπος για τον υπολογισμό του μήκους μιας συμβολοσειράς κωδικοποιημένης σε Base64 είναι:
Όπου αναπαριστά τη στέγη (στρογγυλοποίηση προς τα πάνω στο πλησιέστερο ακέραιο).
Χρήση του Εργαλείου Κωδικοποιητή/Αποκωδικοποιητή Base64
Το εργαλείο Base64 μας παρέχει έναν απλό και αποδοτικό τρόπο να κωδικοποιείτε κείμενο σε Base64 ή να αποκωδικοποιείτε το Base64 πίσω σε κείμενο. Ορίστε πώς να το χρησιμοποιήσετε:
Βασική Χρήση
- Επιλέξτε τη λειτουργία: Επιλέξτε "Κωδικοποίηση" για να μετατρέψετε το κείμενο σε Base64 ή "Αποκωδικοποίηση" για να μετατρέψετε το Base64 πίσω σε κείμενο.
- Εισάγετε την είσοδό σας: Πληκτρολογήστε ή επικολλήστε το κείμενο ή τη συμβολοσειρά Base64 στο πεδίο εισόδου.
- Μετατροπή: Κάντε κλικ στο κουμπί "Κωδικοποίηση σε Base64" ή "Αποκωδικοποίηση από Base64" για να πραγματοποιήσετε τη μετατροπή.
- Αντιγράψτε το αποτέλεσμα: Χρησιμοποιήστε το κουμπί "Αντιγραφή" για να αντιγράψετε το αποτέλεσμα στο πρόχειρο σας.
Δυνατότητα Άμεσης Μετατροπής
Το εργαλείο μας περιλαμβάνει τώρα μια επιλογή άμεσης μετατροπής που ενημερώνει την έξοδο καθώς πληκτρολογείτε:
- Ενεργοποιήστε την Άμεση Μετατροπή: Ελέγξτε το πλαίσιο "Άμεση Μετατροπή" στην κορυφή του εργαλείου.
- Δείτε άμεσα αποτελέσματα: Καθώς πληκτρολογείτε στο πεδίο εισόδου, η έξοδος θα ενημερώνεται αυτόματα χωρίς να χρειάζεται να κάνετε κλικ στο κουμπί μετατροπής.
- Εναλλαγή κατά βούληση: Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε την άμεση μετατροπή ανά πάσα στιγμή ανάλογα με την προτίμησή σας.
Η δυνατότητα Άμεσης Μετατροπής είναι ιδιαίτερα χρήσιμη όταν:
- Εργάζεστε με σύντομο έως μεσαίο μήκος κειμένου ή συμβολοσειρές Base64
- Κάνετε σταδιακές αλλαγές και χρειάζεστε άμεση ανατροφοδότηση
- Εξερευνάτε πώς κωδικοποιούνται/αποκωδικοποιούνται διάφοροι χαρακτήρες
- Μαθαίνετε για τα μοτίβα κωδικοποίησης Base64
Για πολύ μεγάλες εισόδους, το εργαλείο χρησιμοποιεί debouncing για να διατηρήσει την απόδοση, διασφαλίζοντας ότι η μετατροπή συμβαίνει μόνο αφού σταματήσετε να πληκτρολογείτε για λίγο, αντί για κάθε πλήκτρο.
Χρήσεις
Η κωδικοποίηση Base64 χρησιμοποιείται ευρέως σε διάφορες εφαρμογές:
-
Συνημμένα Email: Το MIME (Multipurpose Internet Mail Extensions) χρησιμοποιεί το Base64 για να κωδικοποιεί δυαδικά συνημμένα σε email.
-
Δεδομένα URLs: Ενσωμάτωση μικρών εικόνων, γραμματοσειρών ή άλλων πόρων απευθείας σε HTML, CSS ή JavaScript χρησιμοποιώντας το σχήμα URL
data:
. -
Επικοινωνίες API: Ασφαλής μετάδοση δυαδικών δεδομένων σε φορτία JSON ή άλλες κειμενικές μορφές API.
-
Αποθήκευση Δυαδικών Δεδομένων σε Κειμενικές Μορφές: Όταν χρειάζεται να αποθηκευτούν δυαδικά δεδομένα σε XML, JSON ή άλλες κειμενικές μορφές.
-
Συστήματα Πιστοποίησης: Η βασική πιστοποίηση στο HTTP χρησιμοποιεί κωδικοποίηση Base64 (αν και δεν είναι για ασφάλεια, απλώς για κωδικοποίηση).
-
Κρυπτογραφία: Ως μέρος διαφόρων κρυπτογραφικών πρωτοκόλλων και συστημάτων, συχνά για την κωδικοποίηση κλειδιών ή πιστοποιητικών.
-
Τιμές Cookie: Κωδικοποίηση πολύπλοκων δομών δεδομένων για αποθήκευση σε cookies.
Εναλλακτικές
Ενώ το Base64 χρησιμοποιείται ευρέως, υπάρχουν εναλλακτικές που μπορεί να είναι πιο κατάλληλες σε ορισμένες καταστάσεις:
-
URL-safe Base64: Μια παραλλαγή που χρησιμοποιεί "-" και "_" αντί για "+" και "/" για να αποφευχθούν προβλήματα κωδικοποίησης URL. Χρήσιμο για δεδομένα που θα περιληφθούν σε URLs.
-
Base32: Χρησιμοποιεί ένα σύνολο 32 χαρακτήρων, με αποτέλεσμα μεγαλύτερη έξοδο αλλά με καλύτερη αναγνωσιμότητα και αδιαφορία για την περίπτωση.
-
Κωδικοποίηση Hex: Απλή μετατροπή σε δεκαεξαδικό, που είναι λιγότερο αποδοτική (διπλασιάζει το μέγεθος) αλλά πολύ απλή και ευρέως υποστηριζόμενη.
-
Δυαδική Μεταφορά: Για μεγάλα αρχεία ή όταν η αποδοτικότητα είναι κρίσιμη, οι άμεσες δυαδικές πρωτοκόλλες μεταφοράς όπως το HTTP με κατάλληλες κεφαλίδες Content-Type είναι προτιμότερες.
-
Συμπίεση + Base64: Για μεγάλα κείμενα, η συμπίεση πριν την κωδικοποίηση μπορεί να μετριάσει την αύξηση του μεγέθους.
-
Σειριοποίηση JSON/XML: Για δομημένα δεδομένα, η χρήση εγγενών σειριοποιήσεων JSON ή XML μπορεί να είναι πιο κατάλληλη από την κωδικοποίηση Base64.
Ιστορία
Η κωδικοποίηση Base64 έχει τις ρίζες της στους πρώιμους υπολογιστές και τα συστήματα τηλεπικοινωνιών όπου τα δυαδικά δεδομένα έπρεπε να μεταδοθούν μέσω καναλιών που σχεδιάστηκαν για κείμενο.
Η επίσημη προδιαγραφή του Base64 δημοσιεύθηκε για πρώτη φορά το 1987 ως μέρος του RFC 989, το οποίο καθόρισε το Privacy Enhanced Mail (PEM). Αυτό ενημερώθηκε αργότερα στο RFC 1421 (1993) και το RFC 2045 (1996, ως μέρος του MIME).
Ο όρος "Base64" προέρχεται από το γεγονός ότι η κωδικοποίηση χρησιμοποιεί 64 διαφορετικούς ASCII χαρακτήρες για να αναπαραστήσει δυαδικά δεδομένα. Αυτή η επιλογή 64 χαρακτήρων ήταν σκόπιμη, καθώς το 64 είναι δύναμη του 2 (2^6), γεγονός που καθιστά τη μετατροπή μεταξύ δυαδικών και Base64 αποδοτική.
Με την πάροδο του χρόνου, έχουν προκύψει πολλές παραλλαγές του Base64:
- Standard Base64: Όπως ορίζεται στο RFC 4648, χρησιμοποιώντας A-Z, a-z, 0-9, +, / και = για padding
- URL-safe Base64: Χρησιμοποιεί - και _ αντί για + και / για να αποφευχθούν προβλήματα κωδικοποίησης URL
- Filename-safe Base64: Παρόμοιο με το URL-safe, σχεδιασμένο για χρήση σε ονόματα αρχείων
- Τροποποιημένο Base64 για IMAP: Χρησιμοποιείται στο πρωτόκολλο IMAP με διαφορετικό σύνολο ειδικών χαρακτήρων
Παρά το γεγονός ότι είναι πάνω από τριάντα ετών, το Base64 παραμένει ένα θεμελιώδες εργαλείο στη σύγχρονη υπολογιστική, ιδιαίτερα με την αύξηση των διαδικτυακών εφαρμογών και των API που βασίζονται σε μεγάλο βαθμό σε κειμενικές μορφές δεδομένων όπως το JSON.
Παραδείγματα Κώδικα
Ακολουθούν παραδείγματα κωδικοποίησης και αποκωδικοποίησης Base64 σε διάφορες γλώσσες προγραμματισμού:
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε JavaScript
2function encodeToBase64(text) {
3 return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7 try {
8 return atob(base64String);
9 } catch (e) {
10 throw new Error("Μη έγκυρη συμβολοσειρά Base64");
11 }
12}
13
14// Παράδειγμα χρήσης
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Κωδικοποιημένο:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Αποκωδικοποιημένο:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Python
2import base64
3
4def encode_to_base64(text):
5 # Μετατροπή της συμβολοσειράς σε byte και στη συνέχεια κωδικοποίηση
6 text_bytes = text.encode('utf-8')
7 base64_bytes = base64.b64encode(text_bytes)
8 return base64_bytes.decode('utf-8')
9
10def decode_from_base64(base64_string):
11 try:
12 # Μετατροπή της συμβολοσειράς base64 σε byte και στη συνέχεια αποκωδικοποίηση
13 base64_bytes = base64_string.encode('utf-8')
14 text_bytes = base64.b64decode(base64_bytes)
15 return text_bytes.decode('utf-8')
16 except Exception as e:
17 raise ValueError(f"Μη έγκυρη συμβολοσειρά Base64: {e}")
18
19# Παράδειγμα χρήσης
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Κωδικοποιημένο: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Αποκωδικοποιημένο: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Java
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Example {
6 public static String encodeToBase64(String text) {
7 byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
8 byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
9 return new String(encodedBytes, StandardCharsets.UTF_8);
10 }
11
12 public static String decodeFromBase64(String base64String) {
13 try {
14 byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
15 byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
16 return new String(decodedBytes, StandardCharsets.UTF_8);
17 } catch (IllegalArgumentException e) {
18 throw new IllegalArgumentException("Μη έγκυρη συμβολοσειρά Base64: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Hello, World!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Κωδικοποιημένο: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Αποκωδικοποιημένο: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε PHP
3function encodeToBase64($text) {
4 return base64_encode($text);
5}
6
7function decodeFromBase64($base64String) {
8 $decoded = base64_decode($base64String, true);
9 if ($decoded === false) {
10 throw new Exception("Μη έγκυρη συμβολοσειρά Base64");
11 }
12 return $decoded;
13}
14
15// Παράδειγμα χρήσης
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Κωδικοποιημένο: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Αποκωδικοποιημένο: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Σφάλμα: " . $e->getMessage() . "\n";
25}
26?>
27
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε C#
2using System;
3using System.Text;
4
5class Base64Example
6{
7 public static string EncodeToBase64(string text)
8 {
9 byte[] textBytes = Encoding.UTF8.GetBytes(text);
10 return Convert.ToBase64String(textBytes);
11 }
12
13 public static string DecodeFromBase64(string base64String)
14 {
15 try
16 {
17 byte[] base64Bytes = Convert.FromBase64String(base64String);
18 return Encoding.UTF8.GetString(base64Bytes);
19 }
20 catch (FormatException)
21 {
22 throw new FormatException("Μη έγκυρη συμβολοσειρά Base64");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Κωδικοποιημένο: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Αποκωδικοποιημένο: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Σφάλμα: {e.Message}");
40 }
41 }
42}
43
1# Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Ruby
2require 'base64'
3
4def encode_to_base64(text)
5 Base64.strict_encode64(text)
6end
7
8def decode_from_base64(base64_string)
9 begin
10 Base64.strict_decode64(base64_string)
11 rescue ArgumentError => e
12 raise "Μη έγκυρη συμβολοσειρά Base64: #{e.message}"
13 end
14end
15
16# Παράδειγμα χρήσης
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Κωδικοποιημένο: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Αποκωδικοποιημένο: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Σφάλμα: #{e.message}"
26end
27
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Go
2package main
3
4import (
5 "encoding/base64"
6 "fmt"
7)
8
9func encodeToBase64(text string) string {
10 return base64.StdEncoding.EncodeToString([]byte(text))
11}
12
13func decodeFromBase64(base64_string string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64_string)
15 if err != nil {
16 return "", fmt.Errorf("μη έγκυρη συμβολοσειρά Base64: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Κωδικοποιημένο:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Σφάλμα:", err)
29 } else {
30 fmt.Println("Αποκωδικοποιημένο:", decoded) // Hello, World!
31 }
32}
33
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Swift
2import Foundation
3
4func encodeToBase64(_ text: String) -> String? {
5 if let data = text.data(using: .utf8) {
6 return data.base64EncodedString()
7 }
8 return nil
9}
10
11func decodeFromBase64(_ base64String: String) -> String? {
12 if let data = Data(base64Encoded: base64String) {
13 return String(data: data, encoding: .utf8)
14 }
15 return nil
16}
17
18// Παράδειγμα χρήσης
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Κωδικοποιημένο: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Αποκωδικοποιημένο: \(decoded)") // Hello, World!
25 } else {
26 print("Σφάλμα: Δεν μπόρεσε να αποκωδικοποιήσει τη συμβολοσειρά Base64")
27 }
28} else {
29 print("Σφάλμα: Δεν μπόρεσε να κωδικοποιήσει το κείμενο")
30}
31
1' Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Excel VBA
2' Σημείωση: Αυτό απαιτεί αναφορά στη Microsoft XML, v6.0
3Function EncodeToBase64(text As String) As String
4 Dim xmlObj As Object
5 Set xmlObj = CreateObject("MSXML2.DOMDocument")
6
7 Dim xmlNode As Object
8 Set xmlNode = xmlObj.createElement("b64")
9
10 xmlNode.DataType = "bin.base64"
11 xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
12
13 EncodeToBase64 = xmlNode.text
14
15 Set xmlNode = Nothing
16 Set xmlObj = Nothing
17End Function
18
19Function DecodeFromBase64(base64String As String) As String
20 On Error GoTo ErrorHandler
21
22 Dim xmlObj As Object
23 Set xmlObj = CreateObject("MSXML2.DOMDocument")
24
25 Dim xmlNode As Object
26 Set xmlNode = xmlObj.createElement("b64")
27
28 xmlNode.DataType = "bin.base64"
29 xmlNode.text = base64String
30
31 DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
32
33 Set xmlNode = Nothing
34 Set xmlObj = Nothing
35 Exit Function
36
37ErrorHandler:
38 DecodeFromBase64 = "Σφάλμα: Μη έγκυρη συμβολοσειρά Base64"
39End Function
40
41' Χρήση σε ένα φύλλο εργασίας:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# Κωδικοποίηση/Αποκωδικοποίηση Base64 σε R
2# Απαιτεί την βιβλιοθήκη 'base64enc'
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Μετατροπή κειμένου σε raw bytes, στη συνέχεια κωδικοποίηση
8 text_raw <- charToRaw(text)
9 base64_encoded <- base64encode(text_raw)
10 return(rawToChar(base64_encoded))
11}
12
13decode_from_base64 <- function(base64_string) {
14 tryCatch({
15 # Μετατροπή συμβολοσειράς base64 σε raw, στη συνέχεια αποκωδικοποίηση
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Μη έγκυρη συμβολοσειρά Base64:", e$message))
21 })
22}
23
24# Παράδειγμα χρήσης
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Κωδικοποιημένο:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Αποκωδικοποιημένο:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Σφάλμα:", e$message, "\n")
34})
35
1% Κωδικοποίηση/Αποκωδικοποίηση Base64 σε MATLAB
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Κωδικοποίηση
6 encoded = encode_to_base64(originalText);
7 fprintf('Κωδικοποιημένο: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Αποκωδικοποίηση
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Αποκωδικοποιημένο: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Σφάλμα: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Μετατροπή κειμένου σε uint8 πίνακα και κωδικοποίηση
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Αποκωδικοποίηση της συμβολοσειράς base64 σε uint8 πίνακα
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Μη έγκυρη συμβολοσειρά Base64');
31 end
32end
33
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε C χρησιμοποιώντας OpenSSL
2#include <stdio.h>
3#include <string.h>
4#include <openssl/bio.h>
5#include <openssl/evp.h>
6#include <openssl/buffer.h>
7#include <stdint.h>
8
9char* encode_to_base64(const char* input) {
10 BIO *bio, *b64;
11 BUF_MEM *bufferPtr;
12
13 b64 = BIO_new(BIO_f_base64());
14 bio = BIO_new(BIO_s_mem());
15 bio = BIO_push(b64, bio);
16
17 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
18 BIO_write(bio, input, strlen(input));
19 BIO_flush(bio);
20 BIO_get_mem_ptr(bio, &bufferPtr);
21
22 char* result = (char*)malloc(bufferPtr->length + 1);
23 memcpy(result, bufferPtr->data, bufferPtr->length);
24 result[bufferPtr->length] = '\0';
25
26 BIO_free_all(bio);
27
28 return result;
29}
30
31char* decode_from_base64(const char* input) {
32 BIO *bio, *b64;
33 size_t length = strlen(input);
34 char* buffer = (char*)malloc(length);
35
36 b64 = BIO_new(BIO_f_base64());
37 bio = BIO_new_mem_buf(input, -1);
38 bio = BIO_push(b64, bio);
39
40 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
41 int decoded_length = BIO_read(bio, buffer, length);
42
43 if (decoded_length <= 0) {
44 free(buffer);
45 BIO_free_all(bio);
46 return NULL; // Μη έγκυρη είσοδος Base64
47 }
48
49 buffer[decoded_length] = '\0';
50
51 BIO_free_all(bio);
52
53 return buffer;
54}
55
56int main() {
57 const char* original_text = "Hello, World!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Κωδικοποιημένο: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Αποκωδικοποιημένο: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Σφάλμα: Μη έγκυρη συμβολοσειρά Base64\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Κωδικοποίηση/Αποκωδικοποίηση Base64 σε Rust
2use base64::{encode, decode};
3use std::str;
4
5fn encode_to_base64(text: &str) -> String {
6 encode(text)
7}
8
9fn decode_from_base64(base64_string: &str) -> Result<String, String> {
10 match decode(base64_string) {
11 Ok(bytes) => {
12 match str::from_utf8(&bytes) {
13 Ok(text) => Ok(text.to_string()),
14 Err(e) => Err(format!("Μη έγκυρη ακολουθία UTF-8: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Μη έγκυρη συμβολοσειρά Base64: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Κωδικοποιημένο: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Αποκωδικοποιημένο: {}", decoded), // Hello, World!
28 Err(e) => println!("Σφάλμα: {}", e)
29 }
30}
31
1// Υλοποίηση JavaScript με Άμεση Μετατροπή
2
3const textInput = document.getElementById('text-input');
4const base64Output = document.getElementById('base64-output');
5const liveConversionCheckbox = document.getElementById('live-conversion');
6let debounceTimeout = null;
7
8// Συνάρτηση για κωδικοποίηση με debouncing για απόδοση
9function liveEncode() {
10 // Καθαρίστε οποιοδήποτε υπάρχον timeout
11 if (debounceTimeout) {
12 clearTimeout(debounceTimeout);
13 }
14
15 // Ορίστε ένα νέο timeout για να αποφευχθεί η υπερβολική επεξεργασία κατά τη διάρκεια γρήγορης πληκτρολόγησης
16 debounceTimeout = setTimeout(() => {
17 try {
18 const text = textInput.value;
19 if (text.trim()) {
20 base64Output.value = btoa(text);
21 } else {
22 base64Output.value = '';
23 }
24 } catch (e) {
25 console.error('Σφάλμα κωδικοποίησης:', e);
26 // Διαχειριστείτε το σφάλμα κατάλληλα στην διεπαφή χρήστη
27 }
28 }, 300); // 300ms καθυστέρηση debouncing
29}
30
31// Εκδηλώσεις
32liveConversionCheckbox.addEventListener('change', function() {
33 if (this.checked) {
34 // Ενεργοποιήστε την άμεση μετατροπή
35 textInput.addEventListener('input', liveEncode);
36 // Αρχική κωδικοποίηση
37 liveEncode();
38 } else {
39 // Απενεργοποιήστε την άμεση μετατροπή
40 textInput.removeEventListener('input', liveEncode);
41 }
42});
43
Άκρες και Σκέψεις
Κατά την εργασία με την κωδικοποίηση και αποκωδικοποίηση Base64, να είστε προσεκτικοί με αυτές τις σημαντικές παρατηρήσεις:
-
Unicode και Μη-ASCII Χαρακτήρες: Όταν κωδικοποιείτε κείμενο με μη-ASCII χαρακτήρες, διασφαλίστε τη σωστή κωδικοποίηση χαρακτήρων (συνήθως UTF-8) πριν από την κωδικοποίηση Base64.
-
Padding: Το Standard Base64 χρησιμοποιεί padding με χαρακτήρες "=" για να διασφαλίσει ότι το μήκος της εξόδου είναι πολλαπλάσιο του 4. Ορισμένες υλοποιήσεις επιτρέπουν την παράλειψη του padding, γεγονός που μπορεί να προκαλέσει προβλήματα συμβατότητας.
-
Γραμμές Διακοπής: Οι παραδοσιακές υλοποιήσεις Base64 εισάγουν γραμμές διακοπής (συνήθως κάθε 76 χαρακτήρες) για αναγνωσιμότητα, αλλά οι σύγχρονες εφαρμογές συχνά τις παραλείπουν.
-
URL-Safe Base64: Το Standard Base64 χρησιμοποιεί τους χαρακτήρες "+" και "/" που έχουν ειδικές σημασίες σε URLs. Για περιβάλλοντα URL, χρησιμοποιήστε το URL-safe Base64 που αντικαθιστά αυτούς με "-" και "_".
-
Λευκός Χώρος: Κατά την αποκωδικοποίηση, ορισμένες υλοποιήσεις είναι επιεικείς και αγνοούν τον λευκό χώρο, ενώ άλλες απαιτούν ακριβή είσοδο.
-
Αύξηση Μεγέθους: Η κωδικοποίηση Base64 αυξάνει το μέγεθος των δεδομένων κατά περίπου 33% (4 byte εξόδου για κάθε 3 byte εισόδου).
-
Απόδοση: Η κωδικοποίηση/αποκωδικοποίηση Base64 μπορεί να είναι υπολογιστικά εντατική για πολύ μεγάλα δεδομένα. Το εργαλείο μας χρησιμοποιεί debouncing για να διατηρήσει την ευχέρεια ακόμη και με μεγαλύτερες εισόδους.
-
Σκέψεις για Άμεση Μετατροπή: Όταν χρησιμοποιείτε τη δυνατότητα άμεσης μετατροπής με πολύ μεγάλες εισόδους, μπορεί να παρατηρήσετε μια ελαφριά καθυστέρηση καθώς το εργαλείο επεξεργάζεται τα δεδομένα. Αυτό είναι φυσιολογικό και βοηθά στη διατήρηση της απόδοσης του προγράμματος περιήγησης.
Συχνές Ερωτήσεις
Τι είναι η δυνατότητα Άμεσης Μετατροπής;
Η δυνατότητα Άμεσης Μετατροπής ενημερώνει αυτόματα την έξοδο καθώς πληκτρολογείτε, χωρίς να απαιτείται να κάνετε κλικ στο κουμπί κωδικοποίησης ή αποκωδικοποίησης. Αυτό παρέχει άμεση ανατροφοδότηση και καθιστά το εργαλείο πιο διαδραστικό και αποδοτικό στη χρήση.
Θα επιβραδύνει η Άμεση Μετατροπή το πρόγραμμα περιήγησής μου με μεγάλες εισόδους;
Η υλοποίηση μας χρησιμοποιεί debouncing για να διασφαλίσει καλή απόδοση ακόμη και με μεγαλύτερες εισόδους. Η μετατροπή συμβαίνει μόνο αφού σταματήσετε να πληκτρολογείτε για λίγο, αντί για κάθε πλήκτρο, γεγονός που αποτρέπει την υπερβολική επεξεργασία κατά τη διάρκεια γρήγορης πληκτρολόγησης.
Πότε πρέπει να χρησιμοποιήσω την Άμεση Μετατροπή σε σχέση με τη χειροκίνητη μετατροπή;
Η Άμεση Μετατροπή είναι ιδανική για διαδραστική εργασία όπου θέλετε άμεση ανατροφοδότηση. Για πολύ μεγάλες σύνολα δεδομένων ή όταν θέλετε να αναθεωρήσετε την είσοδό σας πριν από τη μετατροπή, μπορεί να προτιμάτε την επιλογή χειροκίνητης μετατροπής.
Λειτουργεί η Άμεση Μετατροπή και για τις δύο κατευθύνσεις;
Ναι, η δυνατότητα Άμεσης Μετατροπής λειτουργεί και στις δύο κατευθύνσεις - από κείμενο σε Base64 και από Base64 σε κείμενο.
Τι συμβαίνει αν εισάγω μη έγκυρο Base64 με ενεργοποιημένη την Άμεση Μετατροπή;
Αν εισάγετε μη έγκυρους χαρακτήρες Base64 ενώ βρίσκεστε σε λειτουργία αποκωδικοποίησης με ενεργοποιημένη την Άμεση Μετατροπή, το εργαλείο θα εμφανίσει ένα μήνυμα σφάλματος σε πραγματικό χρόνο, βοηθώντας σας να εντοπίσετε και να διορθώσετε το πρόβλημα αμέσως.
Αναφορές
- RFC 4648 - Οι Κωδικοποιήσεις Base16, Base32 και Base64
- RFC 2045 - MIME Μέρος Ένα: Μορφή Σωμάτων Μηνυμάτων Διαδικτύου
- MDN Web Docs: Κωδικοποίηση και Αποκωδικοποίηση Base64
- Base64 - Βικιπαίδεια
- MIME - Βικιπαίδεια
Δοκιμάστε το εργαλείο Κωδικοποιητή/Αποκωδικοποιητή Base64 σήμερα για να μετατρέψετε γρήγορα μεταξύ κειμένου και μορφών Base64 με την ευκολία της άμεσης μετατροπής. Είτε είστε προγραμματιστής που εργάζεται με APIs, χειρίζεστε συνημμένα email ή ενσωματώνετε δυαδικά δεδομένα σε κειμενικές μορφές, το εργαλείο μας καθιστά τη διαδικασία απλή και αποδοτική.
Σχετικά Εργαλεία
Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας