شيفرة أفين
شفّر أو فك التشفير بشيفرة أفين، التي تضرب موضع كل حرف في a وتضيف b: عندما يكون a هو 5 وb هو 8 تصبح AFFINE CIPHER هي IHHWVC SWFRCP. ويظهر أيضًا معكوس a، وهو هنا 21. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- AFFINE CIPHER
- A
- 5
- B
- 8
- وضع الحساب
- Encrypt
- النتيجة
- IHHWVC SWFRCP
- معكوس A
- 21
- الطول
- 13
- الأحرف المحوَّلة
- 12
شيفرة أفين هي استبدال أحادي الأبجدية كلاسيكي يحوّل موضع كل حرف x عبر الصيغة الخطية E(x)=(a·x+b) mod 26، حيث a مضاعف أولي مع ستة وعشرين وb إزاحة جمعية. يضرب فك التشفير في المعكوس التركيبي لـ a، ومن ثم يكون كل زوج مفاتيح صالح قابلًا للعكس تمامًا. وعلى خلاف ROT13 أو أطباش، فإن كلا المفتاحين معامِلان حرّان ضمن المجموعة المسموح بها، ما يجعل شيفرة أفين خطوة تعليمية معيارية بين شيفرة قيصر ذات الإزاحة الثابتة وشيفرات الاستبدال الأحادية الكاملة بالكلمة المفتاحية. تُستخدم في واجبات تحليل الشيفرات وتمارين CTF الإحمائية وكتب الألغاز وعروض الحساب التركيبي في الصف. تقبل هذه القدرة نصًا غير فارغ ومفتاحين صحيحين a وb ونمطًا اختياريًا للتشفير أو فك التشفير، وتعيد السلسلة المحوَّلة مع معكوس a وعدد الأحرف.
قواعد التحقق والمفاتيح الأولية والأخطاء الشائعة
القاعدة الحاسمة في المنتج هي أن a يجب أن يكون أوليًا مع ستة وعشرين: يجب أن يساوي gcd(a,26) واحدًا ليوجد المعكوس التركيبي. المضاعفات الصالحة هي واحد وثلاثة وخمسة وسبعة وتسعة وأحد عشر وخمسة عشر وسبعة عشر وتسعة عشر وواحد وعشرون وثلاثة وعشرون وخمسة وعشرون؛ أما القيم الزوجية ومضاعفات ثلاثة عشر فتشترك مع ستة وعشرين في عامل وتُرفض برسالة واضحة تفيد بأن a غير أولي.
لا تعتبر الناتج تشفيرًا للسرية: فضاء المفاتيح ضئيل، وتحليل التكرار ما زال فعّالًا، ولا ينبغي أبدًا أن تسوّق صفحة المنتج شيفرة أفين بوصفها ضابط أمان لكلمات المرور أو الرموز المميزة أو البيانات الشخصية. فضّل هذه الصفحة عندما تكون نية البحث شيفرة أفين أو تشفير وفك تشفير أفين أو الشيفرة الأحادية التركيبية؛ فأطباش وROT13 يجيبان عن نوايا التقابل الثابت، وشيفرة السور عن التبديل الموضعي، وBase64 عن الترميز، لذا تبقى أدوات منفصلة. عند فك التشفير استخدم a وb نفسيهما اللذين أنتجا النص المشفر؛ فالزوج الخاطئ ينتج استبدالًا مختلفًا لن يطابق النص الأصلي.
ثبّت تجهيزات التكامل المستمر على مسار تشفير ناجح وعلى خطأ a غير الأولي معًا، حتى لا تمر تغييرات عرضية في المعكوس أو gcd دون أن تُلاحظ.
استخدامها في الصف وحدودها
استخدم شيفرة أفين المجانية في المتصفح للتحقق من الواجبات وشرائح المحاضرات وتدريبات CTF وعمليات التشفير أو فك التشفير العرضية دون كتابة شيفرة المعكوس التركيبي في كل لغة. يُظهر سير العمل الصفّي المعتاد أن شيفرة قيصر هي الحالة الخاصة a يساوي واحدًا، ثم يغيّر a ضمن مجموعة الأعداد الأولية مع ستة وعشرين ويوضح أن المضاعفات الزوجية تكسر قابلية العكس. يمكن لأدلة الدعم عكس ملاحظات مموَّهة بخفة كتبها الموظفون بمفاتيح صفّية معروفة.
ويمكن لمواقع الألغاز حساب الإجابات مسبقًا لعرضها وكشفها عند الطلب مع mode decrypt. يخضع النص المصدري لقواعد الاحتفاظ نفسها المطبقة على عناصر parse الأخرى من KIT، ويمكن تثبيت النتائج بأمان في تجهيزات التكامل المستمر لأن الخوارزمية حتمية تمامًا عبر البيئات المعزولة. اجمعها مع تحليل التكرار أو أدوات كلاسيكية أخرى فقط عندما تحتاج خطوة تعليمية لاحقة إلى عائلة شيفرات مختلفة — وأبقِ شيفرة أفين في صفحتها الخاصة حتى تبقى نية SEO مركزة على الاستبدال التركيبي بالمفتاح.
حالات الاستخدام
واجبات تحليل الشيفرات وتمارين CTF الإحمائية
يشفّر الطلاب عبارات قصيرة بمفتاحين a وb معلومين، ثم يفكّون تشفير نصوص زملائهم أو يستعيدون المفاتيح ضمن قيود دون تثبيت نظام CAS.
عروض الحساب التركيبي في الصف
يوضح المعلمون أن المضاعفات الأولية وحدها قابلة للعكس، ويقابلون شيفرة أفين بأطباش أو ROT13 الثابتة، ويثبّتون a يساوي خمسة وb يساوي ثمانية كتجهيزة مدرسية.
تجهيزات خطوط الأنابيب والتكامل المستمر
تثبّت السكربتات واختبارات التكامل المستمر مخرجات أفين الحتمية وخطأ a غير الأولي، حتى تفشل أخطاء المعكوس أو gcd العرضية بسرعة.
الأسئلة الشائعة
كيف أفك تشفير نص مشفر بأفين؟
أرسل النص المشفر في text، مع a وb نفسيهما المستخدمين في التشفير، وmode decrypt (أو decode). تكون النتيجة النص الأصلي المُعاد بناؤه عند تطابق المفتاحين.
ماذا يحدث إذا لم يكن a أوليًا مع 26؟
لا يكون تقابل أفين تبادليًا إلا عندما gcd(a,26)=1؛ وتُرفض المضاعفات الزوجية ومضاعفات 13.
هل شيفرة أفين تشفيرًا آمنًا؟
لا. شيفرة أفين شيفرة أحادية الأبجدية كلاسيكية للألغاز والتعليم لا للسرية. لا تستخدمها أبدًا لكلمات المرور أو البيانات الحساسة.
ما القيم المسموح بها للمفتاحين a وb؟
لا يُقبل للمفتاح a إلا 1 و3 و5 و7 و9 و11 و15 و17 و19 و21 و23 و25، لأنها وحدها أولية مع 26. أما b فيقبل أي عدد صحيح من 0 إلى 25، وتُرفض القيم الأخرى.
ماذا يحدث للمسافات والأرقام والحروف الكبيرة؟
لا يتغير إلا الحروف اللاتينية. تبقى الأرقام والمسافات وعلامات الترقيم والرموز التعبيرية والكتابات الأخرى كما هي، ويحتفظ كل حرف بحالته الكبيرة أو الصغيرة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/affine \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"AFFINE CIPHER","a":5,"b":8}'const res = await fetch("https://api.kit.forhosting.com/enc/affine", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/affine",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/affine", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"AFFINE CIPHER","a":5,"b":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"AFFINE CIPHER","a":5,"b":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/affine", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "AFFINE CIPHER",
"a": 5,
"b": 8
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.affine",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
وعندما يشترك a مع ستة وعشرين في عامل، يفشل الطلب مع invalid_input لأن التقابل لن يكون تقابلًا تبادليًا.
كيف يعمل تقابل أفين وماذا تحتوي الاستجابة
يعامل التشفير كل حرف لاتيني كرقم من صفر إلى خمسة وعشرين، ويضربه في المفتاح a، ويضيف المفتاح b، ثم يختزل الناتج بقياس ستة وعشرين قبل إعادة كتابة الحرف بحالته الأصلية من حيث الكبر والصغر. تستخدم الأحرف الكبيرة من A إلى Z والصغيرة من a إلى z الإزاحات نفسها، فتحتفظ العبارات المختلطة الحالة بشكلها بينما تتغير هوية الأحرف فقط. وتمر الأرقام والمسافات وعلامات الترقيم والرموز التعبيرية والأنظمة الكتابية غير اللاتينية دون تغيير، فيحتفظ النص بمسافاته ورموزه. النمط الاختياري mode افتراضيًا encrypt؛ ويطبق encrypt وencode التقابل الأمامي، بينما يعكسه decrypt وdecode. أما فك التشفير فيستعيد النص الأصلي بحساب معكوس تركيبي a_inv بحيث a·a_inv ≡ 1 mod 26، ثم بتقييم D(y)=a_inv·(y−b) mod 26 لكل حرف. أرسل JSON يتضمن الحقل النصي الإلزامي text مع أي رسالة غير فارغة، والعدد الصحيح الإلزامي a بين واحد وخمسة وعشرين ويكون أوليًا مع ستة وعشرين، والعدد الصحيح الإلزامي b بين صفر وخمسة وعشرين؛ وتعمل الأسماء البديلة input وvalue وs وmessage للمتن، وmultiplier وkey_a وalpha أسماء بديلة لـ a، بينما shift وkey_b وbeta أسماء بديلة لـ b. عند النجاح تتضمن الاستجابة result مع النص المحوَّل، وmode مُطبَّعًا إلى encrypt أو decrypt، وa وb يعكسان المفتاحين، وa_inv مع المعكوس المستخدم في فك التشفير، وlength مساويًا لعدد أحرف الإدخال، وletters_transformed يعدّ الأحرف من A–Z أو a–z التي تحولت فعلًا، وmethod مساويًا affine ليتمكن العملاء من التفريع دون فحص شكل الاستجابة. المدخلات المتطابقة تنتج دائمًا JSON متطابقًا، لأن المسار حساب تركيبي خالص بلا شبكة ولا بذرة عشوائية ولا ساعة.
قواعد التحقق والمفاتيح الأولية والأخطاء الشائعة
غياب text أو كونه غير نصي أو سلسلة فارغة يؤدي كل ذلك إلى invalid_input ولا يُحتسب في API المدفوعة مسبقًا بعد أن يرفض المحرك الطلب. غياب a أو b، أو مفاتيح غير صحيحة العدد، أو a خارج النطاق من واحد إلى خمسة وعشرين، أو b خارج النطاق من صفر إلى خمسة وعشرين، يفشل كل ذلك أيضًا مع invalid_input. لا تُحذف المسافات والأرقام وعلامات الترقيم: الأحرف اللاتينية وحدها تشارك في الاستبدال، لذا تعيد السلاسل الكثيرة الترقيم نتيجة كاملة مع عدد أقل في letters_transformed.
استخدام API والأسعار وسير العمل الصفّي والحدود العملية
ولجأ إلى API المدفوعة مسبقًا من KIT عندما يحتاج خادم خلفي أو دالة بلا خادم أو منصة تدريس أو SDK إلى عقد مستقر برصيد قدره $0.002 لكل عنصر ناجح؛ فإخفاقات التحقق لا تستهلك الرصيد أبدًا بعد الرفض. يمكن لمؤلفي SDKs ربط الحقل result مباشرة بزر نسخ، بينما تجعل a وb وa_inv وmethod أمثلة OpenAPI مفسِّرة لذاتها. حافظ على أحجام نصية معتادة للحمولات بما يناسب استدعاء عنصر في بيئة Worker معزولة؛ فهذه الأداة للرسائل والمقتطفات لا للكتل الثنائية متعددة الميغابايت.
أسئلة تقنية
كيف أشفّر نصًا بشيفرة أفين؟
أرسل JSON يتضمن text غير فارغ، وعددًا صحيحًا a أوليًا مع 26 (مثلًا 5)، وعددًا صحيحًا b بين 0 و25 (مثلًا 8)، والنمط الاختياري encrypt (القيمة الافتراضية). يحمل الحقل result في الاستجابة النص المشفر.
هل أداة شيفرة أفين مجانية؟
تعمل أداة المتصفح مجانًا على جهازك. أما استدعاءات API فتستخدم رصيد KIT المدفوع مسبقًا بقيمة $0.002 لكل عنصر ناجح؛ ولا تُحتسب إخفاقات التحقق.