شفرة ROT18
يصبح Hello, World! 123 هو Uryyb, Jbeyq! 678 في خطوة واحدة: تتقدم الحروف 13 موضعًا والأرقام خمسة، وتبقى المسافات وعلامات الترقيم كما هي. كرر الخطوة يعد النص الأصلي. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- Hello, World! 123
- النتيجة
- Uryyb, Jbeyq! 678
- الطول
- 17
- الحروف المدوّرة
- 10
- الأرقام المدوّرة
- 3
ROT18 شفرة تدوير مدمجة تطبق ROT13 على كل حرف لاتيني وROT5 على كل رقم عشري في مرور واحد. الحروف A إلى Z وa إلى z تتقدم ثلاثة عشر موضعًا في الأبجدية فيصبح Hello هو Uryyb، بينما تتقدم الأرقام من صفر إلى تسعة خمسة مواضع فيصبح 123 هو 678. المسافات وعلامات الترقيم وغيرها تبقى في مواضعها، ما يحفظ بنية قابلة للقراءة في سلاسل الألغاز والتسميات الخفيفة. لأن ثلاثة عشر نصف ستة وعشرين وخمسة نصف عشرة، فإن تطبيق ROT18 مرة ثانية يلغي الأولى: العملية نفسها ترمّز وتفك. الصقوا أي سلسلة غير فارغة واحصلوا فورًا على النتيجة المحوّلة.
كيف يجمع ROT18 بين ROT13 للحروف وROT5 للأرقام
ROT18 ليست أبجدية منفصلة؛ إنها حاصل دورانين كلاسيكيين بنصف الحلقة يُطبَّقان محرفًا محرفًا. لكل حرف لاتيني يعيّن الخوارزم المحرف إلى فهرس من صفر إلى خمسة وعشرين ضمن حالته، ويضيف ثلاثة عشر، ويأخذ الباقي بمقياس ستة وعشرين، ويعيد التعيين إلى حرف بنفس الحالة. هذا هو ROT13 الكلاسيكي: A تصبح N، وN تصبح A، وHello تصبح Uryyb، وUryyb تعود Hello.
لكل رقم ASCII يعيّن الخوارزم صفرًا إلى تسعة إلى فهرس، ويضيف خمسة، ويأخذ الباقي بمقياس عشرة، ويعيد التعيين: الصفر يصبح خمسة، والخمسة تصبح صفرًا، وواحد اثنان ثلاثة يصبح ستة سبعة ثمانية. المحارف خارج هاتين المجموعتين—المسافات والفواصل والإيموجي والحروف المعلّمة خارج الكتلة اللاتينية الأساسية—تُنسخ دون تغيير حتى تحافظ العبارات على شكلها. التحويل المدمج انعكاس ذاتي: لأن ثلاثة عشر زائد ثلاثة عشر يساوي ستة وعشرين وخمسة زائد خمسة يساوي عشرة، يعود كل حرف وكل رقم إلى نفسه بعد تطبيقين، فالترميز والفك نفس النداء.
لا مفتاح للاختيار ولا علم وضع ولا خطوة فاصلة عائمة. كل خطوة حساب معياري صحيح بقاعدة ثابتة، حتمية بالكامل، بلا نداء شبكة ولا بذرة عشوائية ولا طابع ساعة حائط في المسار. تنفّذ هذه الصفحة فقط ملف ROT18 الثابت—لا إزاحة قيصر متغيرة ولا Vigenère ولا AES ولا كاسر بالقوة الغاشمة.
تلك أدوات ونوايا بحث منفصلة.
ما ترسلونه وما تستلمونه
أرسلوا حقل سلسلة إلزاميًا باسم text يحتوي الرسالة التي تريدون تحويلها. إخفاقات التحقق لا تستهلك الرصيد المدفوع مسبقًا. تشمل الفحوصات الكلاسيكية تحويل Hello, World!
123 إلى Uryyb, Jbeyq! 678، وتطبيق نفس التحويل مجددًا لاستعادة الأصل، والتأكد من رفض حقل text فارغ بدل إعادته دون تغيير. اربطوا نموذج المتصفح المجاني لمسودات ألغاز سريعة وفحوصات الصف، ثم استدعوا العقد ذاته من النصوص عندما تحتاجون تجهيزات جماعية أو اختبارات انحدار.
أين تظهر أدوات ROT18 في العمل الحقيقي
دورات التشفير والبرمجة التمهيدية غالبًا تقدّم ROT13 أولًا ثم تطلب توسيع الفكرة إلى الأرقام؛ ويسرّع أوراكل ROT18 موثوق واحد عروض الواجبات والمصححات الآلية التي تحتاج تدوير الحروف والأرقام. تمارين capture-the-flag وصيد الألغاز ما زالت تخفي رسائل بأسلوب ROT تخلط كلمات وأرقامًا على الملأ، ويريد المحلون تحويلًا سريعًا متوقعًا لا حزمة تحليل تشفير عامة. فرق الدعم والمحتوى أحيانًا تخفي خفيفًا محتوى مشوّقًا أو إجابات اختبارات أو تسميات تشبه الأرقام التسلسلية أو رموز تذاكر داخلية تخلط حروفًا وأرقامًا وتحتاج المسار العكسي دون تثبيت مكتبة خاصة باللغة.
إن احتجتم إزاحة قيصر صحيحة متغيرة أو تشفيرًا مصادقًا قويًا أو ترميز Base32 أو Base64 أو استعادة مفتاح تلقائية بتحليل التردد، عاملوها كنوايا بحث وصفحات هبوط منفصلة بدل إثقال صفحة ROT18 الثابتة هذه.
حالات الاستخدام
عروض صف ROT13 مع الأرقام
أظهروا للطلاب كيف تندمج تدويرات نصف الأبجدية ونصف الأرقام، بتحويل مرجعي للحروف والأرقام معًا.
سلاسل أبجدية رقمية مختلطة في الألغاز وCTF
رمّزوا أو اعكسوا سلاسل التحدي التي تخلط كلمات وأرقامًا دون كتابة نص لمرة واحدة لكل مجموعة مسائل.
الأسئلة الشائعة
ما هو ROT18؟
شفرة تدوير مدمجة: ROT13 على الحروف اللاتينية A–Z/a–z وROT5 على الأرقام 0–9. المحارف غير الأبجدية الرقمية تُترك دون تغيير. تطبيقه مرتين يستعيد النص الأصلي.
كيف أفك ROT18؟
طبّقوا نفس التحويل مجددًا. ROT18 عكس ذاتي لأن 13+13=26 و5+5=10، فالترميز والفك متطابقان.
ماذا يحدث مع إدخال فارغ؟
يجب توفير سلسلة text غير فارغة؛ الإدخال الفارغ يُرفض ولا يُحسب.
هل تُحوَّل المسافات وعلامات الترقيم؟
لا. تُدوَّر فقط A–Z وa–z والأرقام 0–9. المسافات وعلامات الترقيم وغيرها تمر دون تغيير.
لماذا يصبح 123 هو 678؟
لأن كل رقم يتقدم خمسة مواضع على دائرة من الصفر إلى التسعة: يصبح 1 هو 6، و2 هو 7، و3 هو 8. وبما أن الخمسة نصف العشرة، فإن تكرار الخطوة يعيد كل رقم إلى قيمته.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/rot18 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World! 123"}'const res = await fetch("https://api.kit.forhosting.com/enc/rot18", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World! 123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rot18",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World! 123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rot18", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World! 123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World! 123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rot18", 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! 123"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rot18",
"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 حتى لا تعامل النصوص حقلًا فارغًا بصمت كعملية لا تفعل شيئًا.
ما ترسلونه وما تستلمونه
تُقبل أسماء بديلة مثل input وvalue وdata وmessage وplaintext وciphertext لنفس الحقل حتى تعيد النصوص استخدام أشكال الحمولة القائمة. عند النجاح تعيد الاستجابة text الأصلي، وresult كسلسلة ROT18، وlength لذلك الناتج، وletters_rotated وdigits_rotated كعدّادين لعدد المحارف الأبجدية والرقمية المدوّرة، بالإضافة إلى تسميات alphabet وcipher وself_inverse ليؤكد العملاء أنهم أصابوا ملف ROT18. غياب text أو كائنات غير سلسلة له أو سلاسل فارغة أو أطول من الحد الأقصى الموثّق تفشل بـ invalid_input ورسالة إنجليزية واضحة. تسعير استدعاءات API الناجحة هو القاعدة المنشورة $0.002 لكل عنصر.
أين تظهر أدوات ROT18 في العمل الحقيقي
يحتاج مؤلفو المناهج الذين يبنون دروسًا تفاعلية نفس شكل JSON في ودجت المتصفح وAPI حتى تبقى أوراق العمل دون اتصال والمدققون عبر الإنترنت متوافقة. لأن هذه القدرة محرك parse خالص، تسعير API هو القاعدة المنشورة $0.002 لكل عنصر ناجح والتحقق الفاشل لا يستهلك الرصيد.
حالات التكامل
إخفاء خفيف للمحتوى المشوّق والتسميات
دوّروا إجابات الاختبارات أو تسميات بأسلوب التذاكر تحتوي حروفًا وأرقامًا، ثم استعيدوها بنفس النداء في المتصفح أو API.
أسئلة تقنية
ما التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بـ $0.002 لكل عنصر ناجح؛ الإدخال غير الصالح لا يُحسب.