حاسبة اللوغاريتم المنفصل
إذا سألت أي قوة للعدد 2 تعطي 5 بترديد 13 فالجواب 9، لأن 2^9 ≡ 5 (mod 13). أدخل الأساس والهدف والمقياس الأولي لتجد أصغر أس مع مساواة يمكنك التحقق منها. مجانًا في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- G
- 2
- H
- 5
- القدرة (W)
- 13
- X
- 9
- المعادلة
- 2^9 ≡ 5 (mod 13)
تطلب مسألة اللوغاريتم المنفصل عددًا صحيحًا x بحيث يكون أساس معطى g مرفوعًا إلى القوة x مكافئًا لهدف h بترديد العدد الأولي p. وهي الأساس الذي يقوم عليه تبادل مفاتيح Diffie–Hellman، وتشفير ElGamal، والكثير من التمارين المقررة في التعمية الجبرية. تنفذ هذه القدرة خوارزمية baby-step giant-step الكلاسيكية: بحث حتمي بزمن يساوي الجذر التربيعي، يستعيد إما أصغر أس غير سالب أو يثبت أن h ليس قوة لـ g في الزمرة الضربية بترديد p.
ما الذي يطلبه اللوغاريتم المنفصل
بمعلومية الأعداد الصحيحة g و h والعدد الأولي p، فإن اللوغاريتم المنفصل لـ h بالنسبة إلى الأساس g بترديد p هو أي عدد صحيح x يحقق أن g مرفوعًا إلى القوة x يكافئ h بترديد p. عند وجود حل، يكون أصغر ممثل غير سالب في المجال من صفر إلى p ناقص اثنين وحيدًا بمجرد تثبيت ذلك المجال، وهو القيمة التي تعيدها هذه الأداة.
وخلافًا للوغاريتمات الحقيقية المعتادة، لا توجد صيغة أولية مغلقة الشكل تصلح لجميع الأعداد الأولية اعتباطيًا؛ وصعوبة استعادة x لأعداد أولية كبيرة مختارة بعناية هي بالضبط سبب فائدة تعمية اللوغاريتم المنفصل. أما في التدريس وفي تجارب المعاملات الصغيرة، فما زلت تحتاج إلى حلال صحيح قابل للفحص: حلال يتحقق من فرضية الأولية، ويختزل المدخلات إلى نظام البواقي القانوني، ويبحث منهجيًا، ثم يطبع أسًا قابلًا للتحقق أو يفيد بوضوح بعدم وجود حل. هذا هو عقد هذه النقطة الطرفية: حساب ترديدي محض، بلا استدلالات، وبلا استدعاءات شبكية.
كيف يجد baby-step giant-step قيمة x
تعيد خوارزمية baby-step giant-step كتابة الأس المجهول على صورة x يساوي i ضرب m زائد j، حيث m يقارب الجذر التربيعي لرتبة الزمرة p ناقص واحد، ويمتد كل من i و j من الصفر حتى m. تخزن الخوارزمية أولًا كل قيمة صغيرة g^j بترديد p في خريطة تجزئة مفتاحها الباقي، ثم تخطو خطوات كبيرة بضرب الهدف تكرارًا في المعكوس الترديدي لـ g^m، باحثة عن كل باقٍ وسيط في الخريطة. أي تطابق يعطي كلًا من i و j ومن ثم x.
وتختزل الأسس والأهداف الواقعة خارج صفر إلى p ناقص واحد بترديد p، وترجّع الاستجابة صدى g و h و p المختزلة كي يتمكن المستدعون من تدقيق المسألة المحلولة بالضبط.
المدخلات والحدود والتسعير وحالة انعدام الحل
الحقول المطلوبة هي g (الأساس) و h (باقي الهدف) و p (المقياس الأولي). وتُقبل سلاسل الأرقام للأعداد الصحيحة الكبيرة ضمن حد المقياس. فإن لم يكن h في الزمرة الجزئية الدورية المولّدة بـ g بترديد p — مثلًا حين يولّد g زمرة جزئية حقيقية فقط ويقع h خارجها — يعيد الحلال solved قيمتها false مع أس فارغ null ورسالة تفسيرية بدلًا من اختلاق x خاطئ.
وتلك النتيجة حسابٌ ناجح لا خطأ من العميل، لأن الإدخال كان صحيح البنية والجواب الرياضي هو أنه لا يوجد لوغاريتم. أما أخطاء العميل فتشمل الحقول الناقصة، والأعداد غير الصحيحة، والمقاييس خارج المجال المسموح، وp المركب. وتشغّل أداة المتصفح المكتبة نفسها مجانًا دون حساب.
استعمل النتيجة لمراجعة الواجبات، أو لتوليد اختبارات معلومة الجواب لمكتبات التعمية، أو لاستكشاف الانتماء إلى زمرة جزئية قبل توسيع المعاملات في تصميم بروتوكول حقيقي.
حالات الاستخدام
التحقق من الواجبات والامتحانات
يراجع الطلاب والمعلمون تمارين اللوغاريتم المنفصل مثل 2^x ≡ 5 (mod 13) فيحصلون على الأس ومعادلة تكافؤ قابلة للطباعة لمفتاح الإجابة.
اختبارات معلومة الجواب لشيفرة التعمية
يمرر مؤلفو المكتبات مسائل حقول أولية صغيرة إلى التكامل المستمر كي يبقى الأسّ الترديدي ومساعدات المعكوس متسقة مع مرجع BSGS مستقل.
تجارب الانتماء إلى زمرة جزئية
يجرب الباحثون أسسًا وأهدافًا مرشحة بترديد عدد أولي صغير ليروا هل يقع h في الزمرة الجزئية المولّدة بـ g قبل الانتقال إلى معاملات بحجم الإنتاج.
الأسئلة الشائعة
ما الخوارزمية التي تستعملونها؟
baby-step giant-step (Shanks). تجد أصغر x غير سالب يحقق g^x ≡ h (mod p) بزمن وذاكرة من رتبة O(√p) تقريبًا، بعد فحص أولية حتمي على p.
ماذا يحدث إن لم يكن p أوليًا؟
تعرّف هذه الأداة اللوغاريتم المنفصل في الزمرة الضربية لحقل أولي، ولن تعمل بصمت بترديد عدد مركب.
ماذا لو لم يوجد أس؟
تحصل على solved: false و x: null مع رسالة قصيرة. وتلك نتيجة رياضية صحيحة (h ليس قوة لـ g بترديد p)، لا خطأ محاسبة أو تحقق.
كيف أحل 2^x ≡ 5 (mod 13)؟
أدخل 2 أساسًا و5 هدفًا و13 مقياسًا أوليًا. الجواب 9، لأن رفع 2 إلى القوة التاسعة وقسمته على 13 يترك باقيًا قدره 5، ولا يحقق ذلك أي أس أصغر.
ما أكبر مقياس أولي يمكنني إدخاله؟
حتى نحو تريليون. يكفي ذلك للواجبات وشرح البروتوكولات والتجارب الصغيرة مع إجابة سريعة، لكنه غير مخصص للأعداد الأولية الضخمة التي تحمي التشفير الحقيقي.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/numth/discrete-log \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"g":2,"h":5,"p":13}'const res = await fetch("https://api.kit.forhosting.com/numth/discrete-log", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"g": 2,
"h": 5,
"p": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/discrete-log",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"g": 2,
"h": 5,
"p": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/discrete-log", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"g":2,"h":5,"p":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"g":2,"h":5,"p":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/discrete-log", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"g": 2,
"h": 5,
"p": 13
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.discrete_log",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_p | 1000000000007 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
أنت تزود ثلاثة أعداد صحيحة — g و h ومقياس أولي p — وتتلقى إجابة JSON منظمة تحوي الحل، والبواقي المختزلة، ومعادلة تحقق عند وجود حل.
كيف يجد baby-step giant-step قيمة x
يستعمل الأسلوب رتبة الجذر التربيعي لـ p من عمليات الضرب ومداخل الخريطة، ولهذا تحد هذه القدرة المقياس الأولي قرب تريليون واحد: كبير بما يكفي للواجبات، وشروح البروتوكولات، واختبارات إجهاد الزمر الجزئية الصغيرة، ومحدود مع ذلك ليبقى استهلاك الذاكرة والكمون قابلين للتنبؤ على Worker. قبل البحث، يشغل الحلال اختبار أولية Miller–Rabin حتميًا على p؛ فإن كان p مركبًا فشل الاستدعاء بـ invalid_input بدلًا من اختراع لوغاريتم في بنية ليست الزمرة الضربية للحقل الأولي.
المدخلات والحدود والتسعير وحالة انعدام الحل
تسعير الـ API مبلغ ثابت $0.002 لكل طلب ناجح ضمن وحدة العنصر؛ ولا يُحاسب على التحقق الفاشل.
أسئلة تقنية
كيف أحل لوغاريتمًا منفصلًا بهذا الـ API؟
أرسل بطلب POST الأعداد الصحيحة g و h والعدد الأولي p إلى نقطة اللوغاريتم المنفصل (أو استعمل نموذج المتصفح المجاني). تتضمن الاستجابة solved، والأس x عند وجوده، والبواقي المختزلة، ومعادلة تحقق.
كم تكلفة الـ API؟
أداة المتصفح مجانية. يحاسب الـ API بمقدار $0.002 لكل طلب ناجح من رصيد KIT المدفوع مسبقًا؛ ولا يُحاسب الإدخال غير الصالح. ولا يلزم أي اشتراك.