مشفّر Base32 وفكّاكه
رمّز النص إلى Base32 وفق RFC 4648، أي أبجدية A–Z و2–7 التي تُكتب بها مفاتيح تطبيقات المصادقة: تصبح Hello هي JBSWY3DP. وعند الفك تُقبل الحروف الصغيرة وفواصل الأسطر ويُرفض أي رمز غريب. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- Hello
- وضع الحساب
- Encode
- النتيجة
- JBSWY3DP
- الطول
- 8
- بايتات الإدخال
- 5
- الأبجدية
- RFC4648
يحوّل Base32 أي نص UTF-8 إلى سلسلة مدمجة لا تستخدم سوى الحروف من A إلى Z والأرقام من 2 إلى 7، مع إمكانية إضافة علامات يساوي للحشو بحيث ينتهي كل كتلة عند حد مضاعف لثمانية أحرف. وعلى خلاف Base64، تتجنب هذه الأبجدية علامة الزائد والشرطة المائلة وسائر علامات الترقيم التي تُفسد عناوين URL ووسائط سطر الأوامر وأنظمة الملفات غير الحساسة لحالة الأحرف، ولهذا ما تزال بذور الأسرار ومفاتيح TOTP وكثير من رموز البروتوكولات تُوزَّع بصيغة Base32. تنفّذ هذه الأداة أبجدية القسم السادس من RFC 4648 من الطرف إلى الطرف: فوضع التشفير يقرأ النص الصريح بوصفه بايتات UTF-8 ويُخرج نتيجة Base32 محشوّة؛ ووضع فك التشفير يقبل Base32 بأي حالة أحرف، ويزيل الفراغات، ويتحقق من كل حرف، ويعيد نص UTF-8 الأصلي.
كيف يحزم Base32 وفق RFC 4648 البتات في A-Z و2-7
يعرّف القسم السادس من RFC 4648 أبجدية من اثنين وثلاثين رمزًا: الحروف اللاتينية الكبيرة الستة والعشرين تليها الأرقام الستة من 2 إلى 7. يبدأ التشفير من البايتات الخام؛ فبالنسبة إلى النص، تحوّل هذه الأداة أولًا السلسلة بترميز UTF-8 كي تبقى الأحرف متعددة البايتات قابلة للنقل بين اللغات والمنصات. ثم تُقرأ تلك البايتات تدفقًا متصلًا من البتات، فيختار كل خمسة بتات فهرسًا في الأبجدية يُنتج حرف Base32 واحدًا.
وتُزوّد خمسة بايتات من الإدخال بأربعين بتًا تنقسم نظيفةً إلى ثمانية أحرف Base32؛ أما البواقي الأقصر فتترك خماسية أخيرة جزئية تُصفَّر من اليمين ثم تُستكمل بحشو علامات اليساوي بحيث يكون الطول الكلي دائمًا مضاعفًا لثمانية. ويعكس فك التشفير هذه الخريطة: كل حرف غير حشو يسهم بخمسة بتات، وتُصدر البايتات الكاملة فور تراكم ثمانية بتات، ويُفحص الحشو الختامي للتأكد من مشروعية موضعه. وتُتجاهل الفراغات كي تعمل الرموز متعددة الأسطر الملصوقة من البريد الإلكتروني.
وتُطوى الحروف الصغيرة إلى كبيرة قبل البحث.
ما الذي ترسله وما الذي تستلمه
أرسل حقل سلسلة إلزاميًا باسم text وحقل mode اختياريًا قيمته encode أو decode. يعامل وضع encode النص بوصفه محتوى UTF-8 صريحًا ويعيد سلسلة result بأبجدية RFC 4648 مع الحشو. ويعامل وضع decode النص بوصفه Base32، فيوحّد حالة الأحرف والفراغات، ويتحقق من الأبجدية، ويعيد سلسلة UTF-8 المستعادة في result.
ويعيد الاتجاهان كلًّا من mode والنص الأصلي وresult وحقل length لطول سلسلة الإخراج الرئيسية وتسميتَي alphabet وcharset وراية padding وسلسلة مرجعية قصيرة عن المعيار كي يتمكن العملاء من التحقق من الملف الذي أصابوه. ولا تستهلك إخفاقات التحقق أي رصيد مدفوع مسبقًا. ومن الفحوص الكلاسيكية تشفير Hello إلى JBSWY3DP، وتشفير الحرف f وحده إلى MY مع ست علامات يساوي، وفك تشفير كتلة محشوّة معروفة لتعود foobar.
استخدم النموذج المجاني في المتصفح للفحوص السريعة والعروض الصفية، ثم استدعِ العقد ذاته من النصوص البرمجية حين تحتاج إلى كميات كبيرة من المواد السرية أو تجهيزات اختبار الانحدار.
أين يظهر ترميز Base32 في العمل الحقيقي
أسرار كلمات المرور لمرة واحدة المعتمدة على الوقت في RFC 6238 وتطبيقات المصادقة تنتقل دائمًا تقريبًا بصيغة Base32 كي يكتبها المستخدمون دون أن يلتبس عليهم الصفر بالحرف O أو الواحد بالحرف I كما يحدث مع Base64. ولذلك تحتاج حمولات QR الخاصة بالتزويد ورموز النسخ الاحتياطي إلى مسار تشفير موثوق عند توليد المفاتيح ومسار فك تشفير صارم عند استيرادها. ويفضّل نظام DNS وبعض أنظمة إعداد الشبكات أبجديات شبيهة بـ Base32 للتسميات المعتمة التي يجب أن تنجو من طيّ حالة الأحرف.
وتختار الروابط العميقة في الجوال والرموز القصيرة دون اتصال Base32 غالبًا لأن مجموعة رموزها غير حساسة لحالة الأحرف بعد التوحيد وتتجنب الأحرف المحجوزة في URL. وتلصق مكاتب الدعم أسرارًا متعددة الأسطر من التذاكر وتحتاج إلى تسامح مع الفراغات دون قبول رموز فاسدة تُنتج مفتاحًا خاطئًا. ويريد مؤلفو المناهج الذين يدرّسون مخططات الترميز صفحة مخصصة لـ Base32 بدل دفنه تحت صفحة Base64 عامة، لأن نية البحث وقواعد الأبجدية تختلف.
وإذا احتجت إلى Base64 بأبجدية آمنة لعناوين URL، أو ترميز النسبة المئوية لعناوين URL، أو تحويل الأعداد بين الأسس، فعاملها نوايا بحث وصفحات مستقلة بدل تحميل صفحة مشفّر Base32 هذه فوق طاقتها.
حالات الاستخدام
تبادل أسرار TOTP وتطبيقات المصادقة
شفّر الأسرار المشتركة المولّدة حديثًا بصيغة Base32 وفق RFC 4648 لتطبيقات المصادقة، أو فكّ تشفير بذور Base32 الملصوقة أثناء استعادة الحساب واستيراده.
رموز آمنة لطيّ حالة الأحرف للإعدادات والروابط
أنتج تسميات Base32 تنجو من طيّ حالة الأحرف وتتجنب علامتي + و/ عند تضمين معرّفات معتمة في أسماء شبيهة بـ DNS أو روابط عميقة.
الأسئلة الشائعة
أي أبجدية Base32 تستخدمها هذه الأداة؟
القسم السادس من RFC 4648: الحروف الكبيرة A-Z والأرقام 2-7، مع حشو «=» حتى مضاعف ثمانية أحرف. وهي ليست Base32hex ولا Crockford Base32.
هل يمكنني التشفير وفك التشفير معًا؟
نعم. اضبط mode على encode (الافتراضي) لتحويل نص UTF-8 الصريح إلى Base32، أو على decode لاستعادة النص من سلسلة Base32.
هل تُقبل Base32 بالحروف الصغيرة عند فك التشفير؟
نعم. تُحوَّل الحروف إلى كبيرة قبل البحث في الأبجدية. وتُزال الفراغات كي تظل اللصقات متعددة الأسطر تعمل.
لماذا ينتهي ناتج Base32 بعلامات يساوي؟
هي الحشو، حتى يكون الطول الكلي دائمًا من مضاعفات الثمانية. فالبايتات الخمسة تملأ ثمانية أحرف تمامًا كما في JBSWY3DP لكلمة Hello، أما الحرف f وحده فيصبح MY تليه ست علامات يساوي.
هل هذا Base32 الخاص بكروكفورد أو Base32hex؟
لا. تُستخدم الأبجدية الكلاسيكية من RFC 4648. أما Base32 كروكفورد وBase32hex فيعتمدان جداول رموز مختلفة، ولا تتوافق نتائجهما مع مفاتيح TOTP وكثير من الأنظمة القديمة التي تتوقع الأبجدية الكلاسيكية.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/base32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "Hello"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base32",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
وأي رمز غير مشروع أثناء فك التشفير يفشل فورًا مع invalid_input كي لا تُفسد عمليات اللصق الخاطئة البيانات في صمت. وتتشارك الأداة المجانية في المتصفح وخدمة API المدفوعة دالة واحدة نقية متطابقة الشكل، فتتفق العروض والنصوص البرمجية وويب هوك الإنتاج دائمًا على التحويل ذاته.
كيف يحزم Base32 وفق RFC 4648 البتات في A-Z و2-7
وأي حرف خارج A-Z و2-7 وعلامة يساوي الحشو يُطلق خطأ invalid_input يذكر الموضع والرمز المخالف. وهذا الرفض الصارم مقصود، إذ إن الاستبدال الصامت كان سيُخفي أخطاء النسخ في أسرار تطبيقات المصادقة وصيغ التبادل. والمسار كله عمل حسابي صحيح حتمي بلا فاصلة عائمة، بلا شبكة وبلا بذور عشوائية وبلا طوابع زمنية، فتُنتج المدخلات المتطابقة دائمًا JSON متطابقًا. والمعيار الذي تنفّذه هذه الصفحة هو أبجدية Base32 الكلاسيكية من RFC 4648، لا Base32hex ولا Crockford Base32 اللذين يستخدمان جداول رموز مختلفة ويكسران التوافق مع TOTP وكثير من واجهات API القديمة.
ما الذي ترسله وما الذي تستلمه
وعند حذف mode يكون encode هو الافتراضي، فيظل الحمولة الواحدة تؤدي عملًا مفيدًا. ويسجّل التشفير أيضًا input_bytes، بينما يسجّل فك التشفير output_bytes. وغياب text أو القيم غير النصية أو قيم mode غير المدعومة أو السلاسل الأطول من الحد الموثّق أو أحرف Base32 غير المشروعة أو الحشو بعد حرف غير حشو أو كثرة علامات الحشو أو الأطوال التي ليست مضاعفًا لثمانية، كلها تفشل مع invalid_input ورسالة إنجليزية واضحة. وتسعيرة طلبات API الناجحة هي الأساس المنشور $0.002 لكل عنصر.
أين يظهر ترميز Base32 في العمل الحقيقي
ولأن هذه الأداة محرك parse خالص، فإن تسعيرة API هي الأساس المنشور $0.002 لكل عنصر ناجح، ولا يستهلك التحقق الفاشل أي رصيد.
حالات التكامل
متجهات اختبار golden عابرة للغات
ولّد تجهيزات تشفير وفك تشفير تطابق Base32 في Python وGo وOpenSSL كي يتشارك التكامل المستمر متعدد اللغات حقيقة واحدة.
أسئلة تقنية
ماذا يحدث إذا احتوت سلسلة Base32 على حرف غير صالح؟
يفشل فك التشفير مع invalid_input مع ذكر الموضع والحرف غير المشروع. ولا يُحصَّل أي رسم عن إخفاقات التحقق.
كم التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. وتستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل عنصر ناجح؛ والإدخال غير الصالح لا يُرسَم.