Whiz Tools

ترميز/فك ترميز Base64

تحويل النص إلى ترميز Base64 والعكس

نسخ

مشفر وفك تشفير Base64

المقدمة

Base64 هو نظام تشفير ثنائي إلى نص يمثل البيانات الثنائية في تنسيق سلسلة ASCII. تم تصميمه لنقل البيانات المخزنة في تنسيقات ثنائية عبر القنوات التي تدعم بشكل موثوق محتوى نصي فقط. يقوم تشفير Base64 بتحويل البيانات الثنائية إلى مجموعة من 64 حرفًا (ومن هنا جاء الاسم) يمكن نقلها بأمان عبر بروتوكولات النص دون تلف البيانات.

تتكون مجموعة أحرف Base64 من:

  • الحروف الكبيرة A-Z (26 حرفًا)
  • الحروف الصغيرة a-z (26 حرفًا)
  • الأرقام 0-9 (10 أحرف)
  • حرفين إضافيين، عادةً "+" و "/" (2 حرف)

تتيح لك هذه الأداة بسهولة تشفير النص إلى تنسيق Base64 أو فك تشفير سلاسل Base64 إلى نصها الأصلي. إنها مفيدة بشكل خاص للمطورين، والمهنيين في تكنولوجيا المعلومات، وأي شخص يعمل مع البيانات التي تحتاج إلى أن تُنقل بأمان عبر قنوات نصية.

كيفية عمل تشفير Base64

عملية التشفير

يعمل تشفير Base64 عن طريق تحويل كل مجموعة من ثلاثة بايت (24 بت) من البيانات الثنائية إلى أربعة أحرف Base64. تتبع العملية الخطوات التالية:

  1. تحويل النص المدخل إلى تمثيله الثنائي (باستخدام تشفير ASCII أو UTF-8)
  2. تجميع البيانات الثنائية في مجموعات من 24 بت (3 بايت)
  3. تقسيم كل مجموعة من 24 بت إلى أربع مجموعات من 6 بت
  4. تحويل كل مجموعة من 6 بت إلى حرف Base64 المقابل لها

عندما لا يكون طول المدخلات قابلاً للقسمة على 3، يتم إضافة حشو باستخدام "=" للحفاظ على نسبة 4:3 من أطوال المخرجات إلى المدخلات.

التمثيل الرياضي

بالنسبة لتسلسل البايتات b1,b2,b3b_1, b_2, b_3، يتم حساب أحرف Base64 المقابلة c1,c2,c3,c4c_1, c_2, c_3, c_4 كما يلي:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

حيث Base64[i]\text{Base64}[i] تمثل الحرف ii في أبجدية Base64.

عملية فك التشفير

يعكس فك تشفير Base64 عملية التشفير:

  1. تحويل كل حرف Base64 إلى قيمته المكونة من 6 بت
  2. دمج هذه القيم المكونة من 6 بت
  3. تجميع البتات في مجموعات من 8 بت (بايتات)
  4. تحويل كل بايت إلى حرفه المقابل

الحشو

عندما لا يكون عدد البايتات المراد تشفيرها قابلاً للقسمة على 3، يتم تطبيق الحشو:

  • إذا كان هناك بايت واحد متبقي، يتم تحويله إلى حرفين من Base64 يتبعهما "=="
  • إذا كان هناك بايتان متبقيان، يتم تحويلهما إلى ثلاثة أحرف من Base64 يتبعهما "="

مثال

دعنا نشفر النص "Hello" إلى Base64:

  1. التمثيل ASCII لـ "Hello": 72 101 108 108 111
  2. التمثيل الثنائي: 01001000 01100101 01101100 01101100 01101111
  3. التجميع في مجموعات من 6 بت: 010010 000110 010101 101100 011011 000110 1111
  4. تحتوي المجموعة الأخيرة على 4 بت فقط، لذا نقوم بإضافة حشو بالأصفار: 010010 000110 010101 101100 011011 000110 111100
  5. التحويل إلى القيم العشرية: 18، 6، 21، 44، 27، 6، 60
  6. البحث في أبجدية Base64: S، G، V، s، b، G، 8
  7. النتيجة هي "SGVsbG8="

لاحظ الحشو "=" في النهاية لأن طول المدخلات (5 بايت) غير قابل للقسمة على 3.

الصيغة

الصيغة العامة لحساب طول سلسلة مشفرة Base64 هي:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

حيث x\lceil x \rceil تمثل دالة السقف (تقريب لأعلى إلى أقرب عدد صحيح).

حالات الاستخدام

يستخدم تشفير Base64 على نطاق واسع في تطبيقات مختلفة:

  1. مرفقات البريد الإلكتروني: يستخدم MIME (امتدادات البريد الإلكتروني المتعددة الأغراض) Base64 لتشفير المرفقات الثنائية في البريد الإلكتروني.

  2. عناوين البيانات: تضمين الصور الصغيرة، أو الخطوط، أو الموارد الأخرى مباشرة في HTML أو CSS أو JavaScript باستخدام مخطط عنوان data:.

  3. اتصالات API: نقل البيانات الثنائية بأمان في حمولات JSON أو تنسيقات API النصية الأخرى.

  4. تخزين البيانات الثنائية في تنسيقات نصية: عندما تحتاج البيانات الثنائية إلى أن تُخزن في XML أو JSON أو غيرها من التنسيقات النصية.

  5. أنظمة المصادقة: تستخدم المصادقة الأساسية في HTTP تشفير Base64 (على الرغم من أنه ليس للأمان، بل للتشفير فقط).

  6. التشفير: كجزء من بروتوكولات وأنظمة تشفير مختلفة، غالبًا لتشفير المفاتيح أو الشهادات.

  7. قيم الكوكيز: تشفير هياكل البيانات المعقدة لتخزينها في الكوكيز.

البدائل

بينما يُستخدم Base64 على نطاق واسع، هناك بدائل قد تكون أكثر ملاءمة في بعض الحالات:

  1. Base64 الآمن للعنوان: نسخة تستخدم "-" و "_" بدلاً من "+" و "/" لتجنب مشكلات الترميز في العناوين. مفيد للبيانات التي سيتم تضمينها في العناوين.

  2. Base32: يستخدم مجموعة من 32 حرفًا، مما يؤدي إلى مخرجات أطول ولكن مع قراءة أفضل للبشر وعدم حساسية للحالة.

  3. ترميز Hex: تحويل بسيط إلى سداسي عشري، وهو أقل كفاءة (يضاعف الحجم) ولكنه بسيط جدًا ومدعوم على نطاق واسع.

  4. نقل ثنائي: للملفات الكبيرة أو عندما تكون الكفاءة أمرًا حاسمًا، تكون بروتوكولات النقل الثنائي المباشر مثل HTTP مع رؤوس Content-Type المناسبة مفضلة.

  5. ضغط + Base64: بالنسبة للبيانات النصية الكبيرة، يمكن أن يساعد الضغط قبل التشفير في التخفيف من الزيادة في الحجم.

  6. تسلسل JSON/XML: للبيانات المهيكلة، قد يكون استخدام تسلسل JSON أو XML الأصلي أكثر ملاءمة من تشفير Base64.

التاريخ

تعود جذور تشفير Base64 إلى أنظمة الحوسبة والاتصالات المبكرة حيث كان يجب نقل البيانات الثنائية عبر قنوات مصممة للنص.

تم نشر المواصفة الرسمية لتشفير Base64 لأول مرة في عام 1987 كجزء من RFC 989، الذي حدد البريد الإلكتروني المحسن للخصوصية (PEM). تم تحديث ذلك لاحقًا في RFC 1421 (1993) وRFC 2045 (1996، كجزء من MIME).

يأتي مصطلح "Base64" من حقيقة أن التشفير يستخدم 64 حرفًا ASCII مختلفًا لتمثيل البيانات الثنائية. كان هذا الاختيار لـ 64 حرفًا مقصودًا، حيث أن 64 هو قوة من 2 (2^6)، مما يجعل التحويل بين الثنائية وBase64 فعالاً.

على مر الزمن، ظهرت عدة متغيرات من Base64:

  • Base64 القياسي: كما هو محدد في RFC 4648، باستخدام A-Z، a-z، 0-9، +، / و = للحشو
  • Base64 الآمن للعنوان: يستخدم - و _ بدلاً من + و / لتجنب مشكلات الترميز في العناوين
  • Base64 الآمن للاسم: مشابه للآمن للعنوان، مصمم للاستخدام في أسماء الملفات
  • Base64 المعدل لـ IMAP: يستخدم في بروتوكول IMAP مع مجموعة مختلفة من الأحرف الخاصة

على الرغم من مرور أكثر من ثلاثة عقود، لا يزال Base64 أداة أساسية في الحوسبة الحديثة، خاصة مع ظهور تطبيقات الويب وواجهات برمجة التطبيقات التي تعتمد بشكل كبير على تنسيقات البيانات النصية مثل JSON.

أمثلة على التعليمات البرمجية

إليك أمثلة على تشفير وفك تشفير Base64 في لغات برمجة مختلفة:

// تشفير/فك تشفير Base64 في JavaScript
function encodeToBase64(text) {
  return btoa(text);
}

function decodeFromBase64(base64String) {
  try {
    return atob(base64String);
  } catch (e) {
    throw new Error("سلسلة Base64 غير صالحة");
  }
}

// مثال على الاستخدام
const originalText = "Hello, World!";
const encoded = encodeToBase64(originalText);
console.log("المشفر:", encoded);  // SGVsbG8sIFdvcmxkIQ==

try {
  const decoded = decodeFromBase64(encoded);
  console.log("المفكك:", decoded);  // Hello, World!
} catch (error) {
  console.error(error.message);
}
# تشفير/فك تشفير Base64 في Python
import base64

def encode_to_base64(text):
    # تحويل السلسلة إلى بايتات ثم تشفير
    text_bytes = text.encode('utf-8')
    base64_bytes = base64.b64encode(text_bytes)
    return base64_bytes.decode('utf-8')

def decode_from_base64(base64_string):
    try:
        # تحويل سلسلة base64 إلى بايتات ثم فك التشفير
        base64_bytes = base64_string.encode('utf-8')
        text_bytes = base64.b64decode(base64_bytes)
        return text_bytes.decode('utf-8')
    except Exception as e:
        raise ValueError(f"سلسلة Base64 غير صالحة: {e}")

# مثال على الاستخدام
original_text = "Hello, World!"
encoded = encode_to_base64(original_text)
print(f"المشفر: {encoded}")  # SGVsbG8sIFdvcmxkIQ==

try:
    decoded = decode_from_base64(encoded)
    print(f"المفكك: {decoded}")  # Hello, World!
except ValueError as e:
    print(e)
// تشفير/فك تشفير Base64 في Java
import java.util.Base64;
import java.nio.charset.StandardCharsets;

public class Base64Example {
    public static String encodeToBase64(String text) {
        byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
        byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
        return new String(encodedBytes, StandardCharsets.UTF_8);
    }
    
    public static String decodeFromBase64(String base64String) {
        try {
            byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
            byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
            return new String(decodedBytes, StandardCharsets.UTF_8);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("سلسلة Base64 غير صالحة: " + e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        String originalText = "Hello, World!";
        String encoded = encodeToBase64(originalText);
        System.out.println("المشفر: " + encoded);  // SGVsbG8sIFdvcmxkIQ==
        
        try {
            String decoded = decodeFromBase64(encoded);
            System.out.println("المفكك: " + decoded);  // Hello, World!
        } catch (IllegalArgumentException e) {
            System.err.println(e.getMessage());
        }
    }
}
<?php
// تشفير/فك تشفير Base64 في PHP
function encodeToBase64($text) {
    return base64_encode($text);
}

function decodeFromBase64($base64String) {
    $decoded = base64_decode($base64String, true);
    if ($decoded === false) {
        throw new Exception("سلسلة Base64 غير صالحة");
    }
    return $decoded;
}

// مثال على الاستخدام
$originalText = "Hello, World!";
$encoded = encodeToBase64($originalText);
echo "المشفر: " . $encoded . "\n";  // SGVsbG8sIFdvcmxkIQ==

try {
    $decoded = decodeFromBase64($encoded);
    echo "المفكك: " . $decoded . "\n";  // Hello, World!
} catch (Exception $e) {
    echo "خطأ: " . $e->getMessage() . "\n";
}
?>
// تشفير/فك تشفير Base64 في C#
using System;
using System.Text;

class Base64Example
{
    public static string EncodeToBase64(string text)
    {
        byte[] textBytes = Encoding.UTF8.GetBytes(text);
        return Convert.ToBase64String(textBytes);
    }
    
    public static string DecodeFromBase64(string base64String)
    {
        try
        {
            byte[] base64Bytes = Convert.FromBase64String(base64String);
            return Encoding.UTF8.GetString(base64Bytes);
        }
        catch (FormatException)
        {
            throw new FormatException("سلسلة Base64 غير صالحة");
        }
    }
    
    static void Main()
    {
        string originalText = "Hello, World!";
        string encoded = EncodeToBase64(originalText);
        Console.WriteLine($"المشفر: {encoded}");  // SGVsbG8sIFdvcmxkIQ==
        
        try
        {
            string decoded = DecodeFromBase64(encoded);
            Console.WriteLine($"المفكك: {decoded}");  // Hello, World!
        }
        catch (FormatException e)
        {
            Console.WriteLine($"خطأ: {e.Message}");
        }
    }
}
# تشفير/فك تشفير Base64 في Ruby
require 'base64'

def encode_to_base64(text)
  Base64.strict_encode64(text)
end

def decode_from_base64(base64_string)
  begin
    Base64.strict_decode64(base64_string)
  rescue ArgumentError => e
    raise "سلسلة Base64 غير صالحة: #{e.message}"
  end
end

# مثال على الاستخدام
original_text = "Hello, World!"
encoded = encode_to_base64(original_text)
puts "المشفر: #{encoded}"  # SGVsbG8sIFdvcmxkIQ==

begin
  decoded = decode_from_base64(encoded)
  puts "المفكك: #{decoded}"  # Hello, World!
rescue StandardError => e
  puts "خطأ: #{e.message}"
end
// تشفير/فك تشفير Base64 في Go
package main

import (
    "encoding/base64"
    "fmt"
)

func encodeToBase64(text string) string {
    return base64.StdEncoding.EncodeToString([]byte(text))
}

func decodeFromBase64(base64String string) (string, error) {
    bytes, err := base64.StdEncoding.DecodeString(base64String)
    if err != nil {
        return "", fmt.Errorf("سلسلة Base64 غير صالحة: %v", err)
    }
    return string(bytes), nil
}

func main() {
    originalText := "Hello, World!"
    encoded := encodeToBase64(originalText)
    fmt.Println("المشفر:", encoded)  // SGVsbG8sIFdvcmxkIQ==
    
    decoded, err := decodeFromBase64(encoded)
    if err != nil {
        fmt.Println("خطأ:", err)
    } else {
        fmt.Println("المفكك:", decoded)  // Hello, World!
    }
}
// تشفير/فك تشفير Base64 في Swift
import Foundation

func encodeToBase64(_ text: String) -> String? {
    if let data = text.data(using: .utf8) {
        return data.base64EncodedString()
    }
    return nil
}

func decodeFromBase64(_ base64String: String) -> String? {
    if let data = Data(base64Encoded: base64String) {
        return String(data: data, encoding: .utf8)
    }
    return nil
}

// مثال على الاستخدام
let originalText = "Hello, World!"
if let encoded = encodeToBase64(originalText) {
    print("المشفر: \(encoded)")  // SGVsbG8sIFdvcmxkIQ==
    
    if let decoded = decodeFromBase64(encoded) {
        print("المفكك: \(decoded)")  // Hello, World!
    } else {
        print("خطأ: لم يتمكن من فك تشفير سلسلة Base64")
    }
} else {
    print("خطأ: لم يتمكن من تشفير النص")
}
' تشفير/فك تشفير Base64 في Excel VBA
' ملاحظة: يتطلب مرجعًا إلى Microsoft XML، الإصدار 6.0
Function EncodeToBase64(text As String) As String
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
    
    EncodeToBase64 = xmlNode.text
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
End Function

Function DecodeFromBase64(base64String As String) As String
    On Error GoTo ErrorHandler
    
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.text = base64String
    
    DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
    Exit Function
    
ErrorHandler:
    DecodeFromBase64 = "خطأ: سلسلة Base64 غير صالحة"
End Function

' الاستخدام في ورقة العمل:
' =EncodeToBase64("Hello, World!")
' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
# تشفير/فك تشفير Base64 في R
# يتطلب حزمة 'base64enc'
# install.packages("base64enc")
library(base64enc)

encode_to_base64 <- function(text) {
  # تحويل النص إلى بايتات خام، ثم تشفير
  text_raw <- charToRaw(text)
  base64_encoded <- base64encode(text_raw)
  return(rawToChar(base64_encoded))
}

decode_from_base64 <- function(base64_string) {
  tryCatch({
    # تحويل سلسلة base64 إلى بايتات خام، ثم فك التشفير
    base64_raw <- charToRaw(base64_string)
    decoded_raw <- base64decode(base64_raw)
    return(rawToChar(decoded_raw))
  }, error = function(e) {
    stop(paste("سلسلة Base64 غير صالحة:", e$message))
  })
}

# مثال على الاستخدام
original_text <- "Hello, World!"
encoded <- encode_to_base64(original_text)
cat("المشفر:", encoded, "\n")  # SGVsbG8sIFdvcmxkIQ==

tryCatch({
  decoded <- decode_from_base64(encoded)
  cat("المفكك:", decoded, "\n")  # Hello, World!
}, error = function(e) {
  cat("خطأ:", e$message, "\n")
})
% تشفير/فك تشفير Base64 في MATLAB
function demo_base64()
    originalText = 'Hello, World!';
    
    % التشفير
    encoded = encode_to_base64(originalText);
    fprintf('المشفر: %s\n', encoded);  % SGVsbG8sIFdvcmxkIQ==
    
    % فك التشفير
    try
        decoded = decode_from_base64(encoded);
        fprintf('المفكك: %s\n', decoded);  % Hello, World!
    catch e
        fprintf('خطأ: %s\n', e.message);
    end
end

function encoded = encode_to_base64(text)
    % تحويل النص إلى مصفوفة uint8 ثم التشفير
    bytes = uint8(text);
    encoded = base64encode(bytes);
end

function decoded = decode_from_base64(base64String)
    try
        % فك تشفير سلسلة base64 إلى مصفوفة uint8
        bytes = base64decode(base64String);
        decoded = char(bytes);
    catch
        error('سلسلة Base64 غير صالحة');
    end
end
// تشفير/فك تشفير Base64 باستخدام OpenSSL في C
#include <stdio.h>
#include <string.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/buffer.h>
#include <stdint.h>

char* encode_to_base64(const char* input) {
    BIO *bio, *b64;
    BUF_MEM *bufferPtr;
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new(BIO_s_mem());
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    BIO_write(bio, input, strlen(input));
    BIO_flush(bio);
    BIO_get_mem_ptr(bio, &bufferPtr);
    
    char* result = (char*)malloc(bufferPtr->length + 1);
    memcpy(result, bufferPtr->data, bufferPtr->length);
    result[bufferPtr->length] = '\0';
    
    BIO_free_all(bio);
    
    return result;
}

char* decode_from_base64(const char* input) {
    BIO *bio, *b64;
    size_t length = strlen(input);
    char* buffer = (char*)malloc(length);
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new_mem_buf(input, -1);
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    int decoded_length = BIO_read(bio, buffer, length);
    
    if (decoded_length <= 0) {
        free(buffer);
        BIO_free_all(bio);
        return NULL; // سلسلة Base64 غير صالحة
    }
    
    buffer[decoded_length] = '\0';
    
    BIO_free_all(bio);
    
    return buffer;
}

int main() {
    const char* original_text = "Hello, World!";
    
    char* encoded = encode_to_base64(original_text);
    printf("المشفر: %s\n", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    char* decoded = decode_from_base64(encoded);
    if (decoded) {
        printf("المفكك: %s\n", decoded);  // Hello, World!
        free(decoded);
    } else {
        printf("خطأ: سلسلة Base64 غير صالحة\n");
    }
    
    free(encoded);
    
    return 0;
}
// تشفير/فك تشفير Base64 في Rust
use base64::{encode, decode};
use std::str;

fn encode_to_base64(text: &str) -> String {
    encode(text)
}

fn decode_from_base64(base64_string: &str) -> Result<String, String> {
    match decode(base64_string) {
        Ok(bytes) => {
            match str::from_utf8(&bytes) {
                Ok(text) => Ok(text.to_string()),
                Err(e) => Err(format!("تسلسل UTF-8 غير صالح: {}", e))
            }
        },
        Err(e) => Err(format!("سلسلة Base64 غير صالحة: {}", e))
    }
}

fn main() {
    let original_text = "Hello, World!";
    let encoded = encode_to_base64(original_text);
    println!("المشفر: {}", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    match decode_from_base64(&encoded) {
        Ok(decoded) => println!("المفكك: {}", decoded),  // Hello, World!
        Err(e) => println!("خطأ: {}", e)
    }
}

حالات حافة واعتبارات

عند العمل مع تشفير وفك تشفير Base64، كن على دراية بهذه الاعتبارات المهمة:

  1. Unicode والأحرف غير ASCII: عند تشفير النص الذي يحتوي على أحرف غير ASCII، تأكد من استخدام الترميز الصحيح (عادةً UTF-8) قبل تشفير Base64.

  2. الحشو: يستخدم Base64 القياسي الحشو باستخدام أحرف "=" لضمان أن يكون طول المخرجات مضاعفًا لـ 4. تسمح بعض التطبيقات بتجاهل الحشو، مما قد يسبب مشكلات في التوافق.

  3. فواصل الأسطر: تقوم تطبيقات Base64 التقليدية بإدراج فواصل أسطر (عادةً كل 76 حرفًا) للقراءة، ولكن التطبيقات الحديثة غالبًا ما تتجاهل ذلك.

  4. Base64 الآمن للعنوان: تستخدم Base64 القياسية أحرف "+" و"/" التي لها معاني خاصة في عناوين URL. للسياقات المتعلقة بالعناوين، استخدم Base64 الآمن للعنوان الذي يستبدل هذه الأحرف بـ "-" و"_".

  5. المسافات البيضاء: عند فك التشفير، تكون بعض التطبيقات مرنة وتتجاهل المسافات البيضاء، بينما تتطلب أخرى إدخالًا دقيقًا.

  6. زيادة الحجم: يزيد تشفير Base64 من حجم البيانات بحوالي 33% (4 بايتات مخرجة لكل 3 بايتات مدخلة).

  7. الأداء: يمكن أن يكون تشفير وفك تشفير Base64 مكثفًا من الناحية الحسابية للبيانات الكبيرة جدًا. ضع في اعتبارك استخدام الأساليب المتدفقة للملفات الكبيرة.

المراجع

  1. RFC 4648 - ترميزات البيانات Base16 وBase32 وBase64
  2. RFC 2045 - MIME الجزء الأول: تنسيق محتويات رسائل الإنترنت
  3. MDN Web Docs: تشفير وفك تشفير Base64
  4. Base64 - ويكيبيديا
  5. MIME - ويكيبيديا
Feedback