بیس64 انکوڈر اور ڈیکوڈر: متن کو بیس64 میں تبدیل کریں / بیس64 سے
متن کو بیس64 میں انکوڈ کرنے یا بیس64 سٹرنگز کو واپس متن میں ڈیکوڈ کرنے کے لیے مفت آن لائن ٹول۔ فوری تبدیلی کے ساتھ معیاری اور یو آر ایل محفوظ بیس64 انکوڈنگ کی حمایت کرتا ہے۔
بیس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 انکوڈنگ اور ڈیکوڈنگ کی مثالیں ہیں:
1// جاوا اسکرپٹ بیس64 انکوڈنگ/ڈیکوڈنگ
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("غلط بیس64 سٹرنگ");
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# پائتھون بیس64 انکوڈنگ/ڈیکوڈنگ
2import base64
3
4def encode_to_base64(text):
5 # سٹرنگ کو بائٹس میں تبدیل کریں اور پھر انکوڈ کریں
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 # بیس64 سٹرنگ کو بائٹس میں تبدیل کریں اور پھر ڈیکوڈ کریں
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"غلط بیس64 سٹرنگ: {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// جاوا بیس64 انکوڈنگ/ڈیکوڈنگ
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("غلط بیس64 سٹرنگ: " + 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// پی ایچ پی بیس64 انکوڈنگ/ڈیکوڈنگ
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("غلط بیس64 سٹرنگ");
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// سی# بیس64 انکوڈنگ/ڈیکوڈنگ
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("غلط بیس64 سٹرنگ");
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# روبی بیس64 انکوڈنگ/ڈیکوڈنگ
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 "غلط بیس64 سٹرنگ: #{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// گو بیس64 انکوڈنگ/ڈیکوڈنگ
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(base64String string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64String)
15 if err != nil {
16 return "", fmt.Errorf("غلط بیس64 سٹرنگ: %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// سوئفٹ بیس64 انکوڈنگ/ڈیکوڈنگ
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("غلطی: بیس64 سٹرنگ کو ڈیکوڈ نہیں کر سکا")
27 }
28} else {
29 print("غلطی: متن کو انکوڈ نہیں کر سکا")
30}
31
1' ایکسل VBA بیس64 انکوڈنگ/ڈیکوڈنگ
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 = "غلطی: غلط بیس64 سٹرنگ"
39End Function
40
41' ایک ورکشیٹ میں استعمال:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# آر بیس64 انکوڈنگ/ڈیکوڈنگ
2# 'base64enc' پیکیج کی ضرورت ہے
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # ٹیکسٹ کو خام بائٹس میں تبدیل کریں، پھر انکوڈ کریں
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 # بیس64 سٹرنگ کو خام میں تبدیل کریں، پھر ڈیکوڈ کریں
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("غلط بیس64 سٹرنگ:", 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% میٹلیب بیس64 انکوڈنگ/ڈیکوڈنگ
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 % بیس64 سٹرنگ کو uint8 آرری میں ڈیکوڈ کریں
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('غلط بیس64 سٹرنگ');
31 end
32end
33
1// سی بیس64 انکوڈنگ/ڈیکوڈنگ اوپن ایس ایل کے ساتھ
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; // غلط بیس64 ان پٹ
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("غلطی: غلط بیس64 سٹرنگ\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// رسٹ بیس64 انکوڈنگ/ڈیکوڈنگ
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!("غلط بیس64 سٹرنگ: {}", 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
کنارے کے معاملات اور غور و خوض
بیس64 انکوڈنگ اور ڈیکوڈنگ کے ساتھ کام کرتے وقت، ان اہم پہلوؤں کا خیال رکھیں:
-
یونیکوڈ اور غیر ASCII کردار: جب غیر ASCII کرداروں کے ساتھ متن انکوڈ کرتے ہیں تو بیس64 انکوڈنگ سے پہلے مناسب کردار کی انکوڈنگ (عام طور پر UTF-8) کو یقینی بنائیں۔
-
پیڈنگ: معیاری بیس64 آؤٹ پٹ کی لمبائی کو 4 کے ضرب میں یقینی بنانے کے لیے "=" کرداروں کے ساتھ پیڈنگ استعمال کرتا ہے۔ کچھ عملدرآمد پیڈنگ کو چھوڑنے کی اجازت دیتے ہیں، جو ہم آہنگی کے مسائل پیدا کر سکتی ہے۔
-
لائن کی وقفے: روایتی بیس64 عملدرآمد پڑھنے کی سہولت کے لیے لائن وقفے (عام طور پر ہر 76 کردار) داخل کرتے ہیں، لیکن جدید ایپلی کیشنز اکثر ان کو چھوڑ دیتی ہیں۔
-
یو آر ایل محفوظ بیس64: معیاری بیس64 "+" اور "/" کرداروں کا استعمال کرتا ہے جن کا یو آر ایل میں خاص معنی ہے۔ یو آر ایل کے تناظر کے لیے، یو آر ایل محفوظ بیس64 کا استعمال کریں جو ان کو "-" اور "_" سے تبدیل کرتا ہے۔
-
خالی جگہ: ڈیکوڈنگ کے دوران، کچھ عملدرآمد نرم ہیں اور خالی جگہوں کو نظر انداز کرتے ہیں، جبکہ دوسرے درست ان پٹ کی ضرورت ہوتی ہے۔
-
سائز میں اضافہ: بیس64 انکوڈنگ ڈیٹا کے سائز میں تقریباً 33% کا اضافہ کرتی ہے (3 ان پٹ بائٹس کے لیے 4 آؤٹ پٹ بائٹس)۔
-
کارکردگی: بیس64 انکوڈنگ/ڈیکوڈنگ بہت بڑے ڈیٹا کے لیے حسابی طور پر مہنگی ہو سکتی ہے۔ بڑے فائلوں کے لیے اسٹریمنگ کے طریقوں پر غور کریں۔
حوالہ جات
رائے
اس ٹول کے بارے میں رائے دینے کے لیے رائے کے ٹوسٹ پر کلک کریں
متعلقہ ٹولز
مزید ٹولز دریافت کریں جو آپ کے ورک فلو کے لیے مفید ہو سکتے ہیں