بیس64 انکوڈر/ڈیکوڈر
متن کو بیس64 انکوڈنگ میں تبدیل کریں اور اس سے واپس
بیس64 انکوڈر اور ڈیکوڈر
تعارف
بیس64 ایک بائنری سے متن میں انکوڈنگ اسکیم ہے جو بائنری ڈیٹا کی نمائندگی ASCII سٹرنگ کی شکل میں کرتی ہے۔ یہ ان بائنری فارمیٹس میں محفوظ کردہ ڈیٹا کو ان چینلز کے ذریعے لے جانے کے لیے ڈیزائن کیا گیا ہے جو صرف قابل اعتماد طور پر متنی مواد کی حمایت کرتے ہیں۔ بیس64 انکوڈنگ بائنری ڈیٹا کو 64 کرداروں کے سیٹ میں تبدیل کرتی ہے (اسی لیے نام) جو کہ محفوظ طریقے سے متن پر مبنی پروٹوکولز کے ذریعے منتقل کیے جا سکتے ہیں بغیر کسی ڈیٹا کی خرابی کے۔
بیس64 کرداروں کا سیٹ مشتمل ہے:
- بڑے حروف A-Z (26 کردار)
- چھوٹے حروف a-z (26 کردار)
- اعداد 0-9 (10 کردار)
- دو اضافی کردار، عام طور پر "+" اور "/" (2 کردار)
یہ ٹول آپ کو آسانی سے متن کو بیس64 شکل میں انکوڈ کرنے یا بیس64 سٹرنگز کو ان کے اصل متن میں واپس ڈیکوڈ کرنے کی اجازت دیتا ہے۔ یہ خاص طور پر ڈویلپرز، آئی ٹی پیشہ ور افراد، اور کسی بھی شخص کے لیے مفید ہے جو ایسے ڈیٹا کے ساتھ کام کر رہا ہے جسے محفوظ طریقے سے متن پر مبنی چینلز کے ذریعے منتقل کرنے کی ضرورت ہے۔
بیس64 انکوڈنگ کا طریقہ کار
انکوڈنگ کا عمل
بیس64 انکوڈنگ ہر تین بائٹس (24 بٹس) کے بائنری ڈیٹا کے گروپ کو چار بیس64 کرداروں میں تبدیل کر کے کام کرتی ہے۔ یہ عمل درج ذیل مراحل پر عمل کرتا ہے:
- ان پٹ متن کو اس کے بائنری نمائندگی میں تبدیل کریں (ASCII یا UTF-8 انکوڈنگ کا استعمال کرتے ہوئے)
- بائنری ڈیٹا کو 24 بٹس (3 بائٹس) کے ٹکڑوں میں گروپ کریں
- ہر 24 بٹ کے ٹکڑے کو چار 6 بٹ کے گروپوں میں تقسیم کریں
- ہر 6 بٹ کے گروپ کو اس کے مطابق بیس64 کردار میں تبدیل کریں
جب ان پٹ کی لمبائی 3 سے تقسیم نہیں ہوتی تو 4:3 کے تناسب کو برقرار رکھنے کے لیے "=" کرداروں کے ساتھ پیڈنگ شامل کی جاتی ہے۔
ریاضیاتی نمائندگی
بائٹس کی ایک ترتیب کے لیے، متعلقہ بیس64 کردار کو درج ذیل طور پر حساب کیا جاتا ہے:
جہاں بیس64 حروف تہجی میں -واں کردار ظاہر کرتا ہے۔
ڈیکوڈنگ کا عمل
بیس64 ڈیکوڈنگ انکوڈنگ کے عمل کو الٹ دیتی ہے:
- ہر بیس64 کردار کو اس کی 6 بٹ کی قیمت میں تبدیل کریں
- ان 6 بٹ کی قیمتوں کو جوڑیں
- بٹس کو 8 بٹ کے ٹکڑوں (بائٹس) میں گروپ کریں
- ہر بائٹ کو اس کے مطابق کردار میں تبدیل کریں
پیڈنگ
جب انکوڈ کرنے کے لیے بائٹس کی تعداد 3 سے تقسیم نہیں ہوتی تو پیڈنگ لاگو کی جاتی ہے:
- اگر ایک بائٹ باقی ہے تو اسے دو بیس64 کرداروں میں تبدیل کیا جاتا ہے اور "==" کے ساتھ پیڈ کیا جاتا ہے
- اگر دو بائٹس باقی ہیں تو انہیں تین بیس64 کرداروں میں تبدیل کیا جاتا ہے اور "=" کے ساتھ پیڈ کیا جاتا ہے
مثال
آئیے "Hello" متن کو بیس64 میں انکوڈ کرتے ہیں:
- "Hello" کا ASCII نمائندگی: 72 101 108 108 111
- بائنری نمائندگی: 01001000 01100101 01101100 01101100 01101111
- 6 بٹ کے ٹکڑوں میں گروپنگ: 010010 000110 010101 101100 011011 000110 1111
- آخری ٹکڑا صرف 4 بٹس میں ہے، لہذا ہم صفر کے ساتھ پیڈ کرتے ہیں: 010010 000110 010101 101100 011011 000110 111100
- دسیمل میں تبدیل کرنا: 18, 6, 21, 44, 27, 6, 60
- بیس64 حروف تہجی میں دیکھنا: S, G, V, s, b, G, 8
- نتیجہ "SGVsbG8=" ہے
نوٹ کریں کہ "=" پیڈنگ آخر میں ہے کیونکہ ان پٹ کی لمبائی (5 بائٹس) 3 سے تقسیم نہیں ہوتی۔
فارمولا
بیس64 انکوڈڈ سٹرنگ کی لمبائی کا حساب لگانے کے لیے عمومی فارمولا یہ ہے:
جہاں چھت کے فعل کی نمائندگی کرتا ہے (نزدیک ترین عدد میں اوپر کی طرف گول کرنا)۔
استعمال کے کیسز
بیس64 انکوڈنگ مختلف ایپلی کیشنز میں وسیع پیمانے پر استعمال ہوتی ہے:
-
ای میل منسلکات: MIME (ملٹی پرپز انٹرنیٹ میل ایکسٹینشنز) بیس64 کا استعمال ای میل میں بائنری منسلکات کو انکوڈ کرنے کے لیے کرتا ہے۔
-
ڈیٹا یو آر ایل: HTML، CSS، یا JavaScript میں براہ راست چھوٹی تصاویر، فونٹس، یا دیگر وسائل کو شامل کرنے کے لیے
data:
یو آر ایل اسکیم کا استعمال کرتے ہوئے۔ -
API مواصلات: JSON پیلوڈز یا دیگر متن پر مبنی API فارمیٹس میں بائنری ڈیٹا کو محفوظ طریقے سے منتقل کرنا۔
-
متن فارمیٹس میں بائنری ڈیٹا کو محفوظ کرنا: جب بائنری ڈیٹا کو XML، JSON، یا دیگر متن پر مبنی فارمیٹس میں محفوظ کرنے کی ضرورت ہو۔
-
توثیق کے نظام: HTTP میں بنیادی توثیق بیس64 انکوڈنگ کا استعمال کرتی ہے (اگرچہ یہ سیکیورٹی کے لیے نہیں، صرف انکوڈنگ کے لیے ہے)۔
-
کرپٹوگرافی: مختلف کرپٹوگرافک پروٹوکولز اور نظاموں کا حصہ، اکثر چابیاں یا سرٹیفکیٹس کو انکوڈ کرنے کے لیے۔
-
کوکی کی قیمتیں: کوکیز میں محفوظ کرنے کے لیے پیچیدہ ڈیٹا ڈھانچوں کو انکوڈ کرنا۔
متبادل
اگرچہ بیس64 وسیع پیمانے پر استعمال ہوتا ہے، لیکن کچھ مخصوص حالات میں زیادہ مناسب متبادل ہو سکتے ہیں:
-
URL محفوظ بیس64: ایک مختلف شکل جو "+" اور "/" کے بجائے "-" اور "_" کا استعمال کرتی ہے تاکہ URL انکوڈنگ کے مسائل سے بچا جا سکے۔ یہ ڈیٹا کے لیے مفید ہے جو URLs میں شامل کیا جائے گا۔
-
بیس32: 32 کرداروں کا استعمال کرتا ہے، جس کے نتیجے میں زیادہ لمبا آؤٹ پٹ ہوتا ہے لیکن انسانی پڑھنے کی بہتر صلاحیت اور کیس کی عدم حساسیت ہوتی ہے۔
-
ہیکس انکوڈنگ: سادہ ہیکساڈیسمل میں تبدیلی، جو کم موثر ہے (سائز کو دوگنا کرتی ہے) لیکن بہت سادہ اور وسیع پیمانے پر حمایت یافتہ ہے۔
-
بائنری ٹرانسفر: بڑے فائلوں کے لیے یا جب کارکردگی اہم ہو تو براہ راست بائنری ٹرانسفر پروٹوکول جیسے HTTP کا استعمال کرتے ہوئے مناسب مواد کی قسم کے ہیڈرز کے ساتھ۔
-
کمپریشن + بیس64: بڑے متنی ڈیٹا کے لیے، انکوڈنگ سے پہلے کمپریس کرنا سائز کے اضافے کو کم کر سکتا ہے۔
-
JSON/XML سیریلائزیشن: ساختی ڈیٹا کے لیے، بیس64 انکوڈنگ کے بجائے مقامی JSON یا XML سیریلائزیشن کا استعمال زیادہ مناسب ہو سکتا ہے۔
تاریخ
بیس64 انکوڈنگ کی جڑیں ابتدائی کمپیوٹنگ اور ٹیلی مواصلات کے نظاموں میں ہیں جہاں بائنری ڈیٹا کو متن کے لیے ڈیزائن کردہ چینلز کے ذریعے منتقل کرنے کی ضرورت تھی۔
بیس64 کی رسمی وضاحت پہلی بار 1987 میں RFC 989 کے طور پر شائع کی گئی، جس نے پرائیویسی اینہانسڈ میل (PEM) کی وضاحت کی۔ اسے بعد میں RFC 1421 (1993) اور RFC 2045 (1996، MIME کے ایک حصے کے طور پر) میں اپ ڈیٹ کیا گیا۔
"بیس64" کی اصطلاح اس حقیقت سے آتی ہے کہ انکوڈنگ بائنری ڈیٹا کی نمائندگی کے لیے 64 مختلف ASCII کرداروں کا استعمال کرتی ہے۔ ان کرداروں کے انتخاب کا مقصد یہ تھا کہ 64 ایک طاقت 2 ہے (2^6)، جو بائنری اور بیس64 کے درمیان تبدیلی کو مؤثر بناتا ہے۔
وقت کے ساتھ، بیس64 کی کئی مختلف شکلیں ابھری ہیں:
- معیاری بیس64: جیسا کہ RFC 4648 میں بیان کیا گیا ہے، A-Z، a-z، 0-9، +، / اور = کو پیڈنگ کے لیے استعمال کیا جاتا ہے
- URL محفوظ بیس64: "-" اور "_" کا استعمال کرتا ہے تاکہ URL انکوڈنگ کے مسائل سے بچا جا سکے
- فائل نام محفوظ بیس64: URL محفوظ کی طرح، فائل کے ناموں میں استعمال کے لیے ڈیزائن کیا گیا
- IMAP کے لیے ترمیم شدہ بیس64: IMAP پروٹوکول میں مختلف خصوصی کرداروں کے سیٹ کے ساتھ استعمال ہوتا ہے
تین دہائیوں سے زیادہ وقت گزر جانے کے باوجود، بیس64 جدید کمپیوٹنگ میں ایک بنیادی ٹول کے طور پر موجود ہے، خاص طور پر ویب ایپلیکیشنز اور APIs کے عروج کے ساتھ جو کہ JSON جیسے متن پر مبنی ڈیٹا فارمیٹس پر بہت زیادہ انحصار کرتے ہیں۔
کوڈ کی مثالیں
یہاں مختلف پروگرامنگ زبانوں میں بیس64 انکوڈنگ اور ڈیکوڈنگ کی مثالیں ہیں:
// جاوا اسکرپٹ بیس64 انکوڈنگ/ڈیکوڈنگ
function encodeToBase64(text) {
return btoa(text);
}
function decodeFromBase64(base64String) {
try {
return atob(base64String);
} catch (e) {
throw new Error("غلط بیس64 سٹرنگ");
}
}
// مثال کا استعمال
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);
}
کنارے کے معاملات اور غور و خوض
بیس64 انکوڈنگ اور ڈیکوڈنگ کے ساتھ کام کرتے وقت، ان اہم پہلوؤں کا خیال رکھیں:
-
یونیکوڈ اور غیر ASCII کردار: جب غیر ASCII کرداروں کے ساتھ متن انکوڈ کرتے ہیں تو بیس64 انکوڈنگ سے پہلے مناسب کردار کی انکوڈنگ (عام طور پر UTF-8) کو یقینی بنائیں۔
-
پیڈنگ: معیاری بیس64 آؤٹ پٹ کی لمبائی کو 4 کے ضرب میں یقینی بنانے کے لیے "=" کرداروں کے ساتھ پیڈنگ استعمال کرتا ہے۔ کچھ عملدرآمد پیڈنگ کو چھوڑنے کی اجازت دیتے ہیں، جو ہم آہنگی کے مسائل پیدا کر سکتی ہے۔
-
لائن کی وقفے: روایتی بیس64 عملدرآمد پڑھنے کی سہولت کے لیے لائن وقفے (عام طور پر ہر 76 کردار) داخل کرتے ہیں، لیکن جدید ایپلی کیشنز اکثر ان کو چھوڑ دیتی ہیں۔
-
یو آر ایل محفوظ بیس64: معیاری بیس64 "+" اور "/" کرداروں کا استعمال کرتا ہے جن کا یو آر ایل میں خاص معنی ہے۔ یو آر ایل کے تناظر کے لیے، یو آر ایل محفوظ بیس64 کا استعمال کریں جو ان کو "-" اور "_" سے تبدیل کرتا ہے۔
-
خالی جگہ: ڈیکوڈنگ کے دوران، کچھ عملدرآمد نرم ہیں اور خالی جگہوں کو نظر انداز کرتے ہیں، جبکہ دوسرے درست ان پٹ کی ضرورت ہوتی ہے۔
-
سائز میں اضافہ: بیس64 انکوڈنگ ڈیٹا کے سائز میں تقریباً 33% کا اضافہ کرتی ہے (3 ان پٹ بائٹس کے لیے 4 آؤٹ پٹ بائٹس)۔
-
کارکردگی: بیس64 انکوڈنگ/ڈیکوڈنگ بہت بڑے ڈیٹا کے لیے حسابی طور پر مہنگی ہو سکتی ہے۔ بڑے فائلوں کے لیے اسٹریمنگ کے طریقوں پر غور کریں۔