شفرة بورتا
بعبارة المرور PORTA يصبح «Hello, World!» هو «Oytub, Chjuq!»، والعبارة نفسها تعيده إلى أصله. تمر الحروف عبر ثلاث عشرة أبجدية مزدوجة، بينما تبقى المسافات والأرقام وعلامات الترقيم في مكانها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- Hello, World!
- Key
- PORTA
- النتيجة
- Oytub, Chjuq!
- الترميز
- porta
- أحرف المفتاح
- PORTA
- طول المفتاح
- 5
شفرة بورتا شفرة كلاسيكية متعددة الأبجديات وتبادلية ابتكرها جيوفاني باتيستا ديلا بورتا: تُحوَّل كل حرف لاتيني أمام عبارة مرور متكررة باستخدام واحدة من ثلاث عشرة أبجدية مقترنة، ولأن هذا الجدول هو معكوس نفسه فإن تشفير النص المشفّر بنفس المفتاح يعيد النص الأصلي. تلصق أي نص وعبارة مرور تحتوي حرفًا لاتينيًا واحدًا على الأقل؛ تتحرك الحروف من A إلى Z ومن a إلى z تحت المفتاح بينما تبقى الأرقام والمسافات وعلامات الترقيم وغيرها، فتُحفظ البنية المقروءة.
كيف تحوّل شفرة بورتا النص بعبارة المرور
بورتا قريبة متعددة الأبجديات من عائلة فيجينير، لكن جدول التشفير فيها مختلف وتبادلي. تنهار حروف المفتاح الستة والعشرون إلى ثلاث عشرة صفًا: يشترك A وB في أبجدية، وC وD في التالية، وهكذا حتى Y وZ. لكل حرف أبجدي في الرسالة خذ حرف عبارة المرور التالي (يتكرر المفتاح ما دامت هناك حروف للتحويل)، واختر صف ذلك الزوج، وارسم حرف النص الواضح عبر جدول نصف الأبجدية.
حروف النصف الأول من الأبجدية (من A إلى M) تنتقل إلى النصف الثاني (من N إلى Z) بدوران يعتمد على الصف، وحروف النصف الثاني تنتقل إلى الأول؛ تُحفظ حالة الحرف فتصبح H الكبيرة حرفًا مشفّرًا كبيرًا والصغيرة تبقى صغيرة. الأحرف خارج A–Z وa–z —بما في ذلك المسافات والفواصل والأرقام والرموز التعبيرية والحروف المنبّرة خارج الكتلة اللاتينية الأساسية— تُنسخ دون تغيير ولا تقدّم مؤشر عبارة المرور. يطابق هذا التصميم جداول بورتا في كتب التشفير الكلاسيكي.
ولأن الجدول انعكاس ذاتي، فإن تطبيق عبارة المرور نفسها مرة ثانية يلغي التحويل الأول: التشفير وفك التشفير عملية واحدة، فلا تحتاج هذه الأداة إلى علم وضع منفصل. رياضيًا كل خطوة حساب معياري صحيح على بنية ثابتة من ثلاثة عشر زوجًا؛ لا تقريب عائم للمفتاح ولا استدعاء شبكة ولا بذرة عشوائية ولا طابع زمني. تنفّذ هذه الصفحة بورتا الكلاسيكية فقط —لا جمع فيجينير ولا طرح بوفورت ولا AES ولا مستعيد مفاتيح آلي يجرّب كل كلمة قاموس نيابة عنك.
تلك أدوات ونوايا بحث منفصلة بصفحاتها الخاصة.
ما الذي ترسله وما الذي تستلمه
أرسل حقل سلسلة إلزاميًا باسم text وحقل سلسلة إلزاميًا باسم key. إخفاقات التحقق لا تستهلك الرصيد المدفوع مسبقًا. تشمل الفحوصات الكلاسيكية تحويل Hello, World!
بعبارة المرور PORTA، والتحقق من أن تغذية النص المشفّر ونفس المفتاح تعيد العبارة الأصلية، وتأكيد رفض المفتاح الفارغ بدل معاملته كهوية صفرية. استخدم نموذج المتصفح المجاني لفحوص الصف السريعة ومسودات الألغاز، ثم استدعِ العقد نفسه من السكربتات عند الحاجة إلى بيانات اختبار جماعية أو اختبارات انحدار.
أين تظهر أدوات شفرة بورتا في العمل الفعلي
تقدّم مقررات التشفير التمهيدية بورتا بعد قيصر وإلى جانب جداول متعددة الأبجديات أخرى ليتدرّب الطلاب على خرائط تبادلية لا تحتاج قاعدة فك منفصلة ويروا كيف تطوي أزواج حروف المفتاح ستة وعشرين حرفًا إلى ثلاث عشرة أبجدية. ما زالت تمارين capture-the-flag وعمليات البحث عن الألغاز تخفي رسائل بورتا أو متغيراتها، ويريد الحلاّلون تحويلًا سريعًا متوقعًا بعبارة مرور لا جناح تحليل شفرات عام. تُعمّي فرق الدعم والمحتوى أحيانًا بشكل خفيف المفاجآت أو إجابات الاختبارات أو التسميات الداخلية بشفرة كلاسيكية بعبارة مرور وتحتاج المسار العكسي دون تثبيت مكتبة تشفير خاصة بلغة.
تولّد حزم اختبار الهندسة متجهات مرجعية لمسارات تحويل السلاسل وتحتاج مخرجات مستقرة عندما يلتف المفتاح وعندما تقاطع غير الحروف الرسالة وعندما تختلط الأحرف الكبيرة والصغيرة. إن احتجت إزاحة قيصر بحرف واحد أو جمع فيجينير متعدد الأبجديات أو طرح بوفورت أو تشفيرًا مصادقًا قويًا أو ترميز Base32 أو Base64 أو استعادة مفتاح تلقائية بتحليل التردد، فاعاملها كنوايا بحث وصفحات منفصلة بدل تحميل هذه الصفحة الكلاسيكية لبورتا بعبارة المرور.
حالات الاستخدام
عروض متعددة الأبجديات تبادلية في الصف
شفّر وفكّ جملًا نموذجية بعبارة مرور معروفة لتُظهر دروس التشفير التمهيدية أبجديات بورتا الثلاث عشرة المقترنة دون وضع فك منفصل.
شفرات بعبارة مرور في الألغاز وCTF
طبّق أو اعكس بورتا بعبارة مرور على سلاسل التحدي دون كتابة سكربت لمرة واحدة لكل مجموعة مسائل.
الأسئلة الشائعة
ما شفرة بورتا؟
شفرة كلاسيكية متعددة الأبجديات وتبادلية ترسم كل حرف عبر إحدى ثلاث عشرة أبجدية تُختار بأزواج حروف المفتاح (A/B، C/D، …، Y/Z). العملية نفسها تشفّر وتفك.
كيف أفك نصًا مشفّرًا ببورتا؟
استدعِ القدرة نفسها مرة أخرى مع النص المشفّر كـ text وعبارة المرور الأصلية. لأن بورتا معكوسة ذاتيًا، تمريرة ثانية تعيد النص الواضح.
ماذا يحدث إذا كان المفتاح مفقودًا أو فارغًا؟
يجب أن تحتوي عبارة المرور على حرف لاتيني واحد على الأقل A–Z أو a–z؛ تُرفض المفاتيح المفقودة أو الفارغة أو بلا حروف ولا تُحسب.
هل تُشفَّر المسافات وعلامات الترقيم؟
لا. يُحوَّل فقط A–Z وa–z. تمر المسافات والأرقام والترقيم وغيرها دون تغيير ولا تقدّم المفتاح.
لماذا تستخدم بورتا ثلاث عشرة أبجدية فقط؟
لأن كل حرفين من حروف المفتاح يتشاركان أبجدية واحدة: A وB، ثم C وD، وهكذا حتى Y وZ. وكل صف يبادل النصف الأول من الأبجدية بالنصف الثاني، لذلك تعيدك عبارة المرور نفسها دائمًا إلى الأصل.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/porta \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!","key":"PORTA"}'const res = await fetch("https://api.kit.forhosting.com/enc/porta", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!",
"key": "PORTA"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/porta",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!",
"key": "PORTA"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/porta", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!","key":"PORTA"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!","key":"PORTA"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/porta", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "Hello, World!",
"key": "PORTA"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.porta",
"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، فلا تسقط مصححات الواجبات والسكربتات بصمت على عبارة مرور افتراضية.
كيف تحوّل شفرة بورتا النص بعبارة المرور
النص وعبارة المرور المتطابقان ينتجان دائمًا JSON نفسه.
ما الذي ترسله وما الذي تستلمه
يجب أن يكون النص سلسلة غير فارغة للرسالة المراد تحويلها؛ ويجب ألا يكون المفتاح فارغًا بعد المرشح الأبجدي: السلاسل من مسافات فقط والمفاتيح التي تحوي أرقامًا أو رموزًا فقط تفشل بـ invalid_input ورسالة إنجليزية واضحة تذكر شرط المفتاح المفقود أو الفارغ. عند النجاح تتضمن الاستجابة result كسلسلة محوّلة، وencoding بقيمة porta، وkey_letters كتيار الأحرف الكبيرة A–Z المستخدم فعليًا، وkey_length لعدد المواضع الأبجدية في ذلك التيار، وinput_length وoutput_length، وshifted_chars لعدد الأحرف الأبجدية التي تحركت، وreciprocal بقيمة true، وسلسلة formula تصف قاعدة جدول الأزواج ليؤكد العملاء الملف الذي وصلوا إليه. غياب text أو key أو كائنات غير نصية لأي حقل أو نص فارغ أو مفاتيح بلا حروف يفشل بـ invalid_input. تسعير طلبات API الناجحة هو القاعدة المنشورة $0.002 لكل عنصر؛ تبقى أداة المتصفح مجانية وتعمل بالكامل على العميل فلا تعتمد العروض على الشبكة للحساب نفسه.
أين تظهر أدوات شفرة بورتا في العمل الفعلي
يحتاج مؤلفو المناهج الذين يبنون دروسًا تفاعلية نفس شكل JSON في أداة المتصفح وفي API حتى تبقى أوراق العمل دون اتصال والمصححات عبر الإنترنت متوافقة عند تقييم التشفير وفكه بزر واحد. ولأن هذه القدرة محرك parse خالص، فتسعير API هو القاعدة المنشورة $0.002 لكل عنصر ناجح والتحقق الفاشل لا يستهلك الرصيد.
حالات التكامل
تعمية خفيفة للمفاجآت والتسميات
اخلط إجابات الاختبارات أو التسميات الداخلية بعبارة مرور كلاسيكية واستعدها لاحقًا بنفس العقد في المتصفح أو API.
أسئلة تقنية
كم التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بمبلغ $0.002 لكل عنصر ناجح؛ الإدخال غير الصالح لا يُحسب.