حاسبة تحقق XOR
تجمع حاسبة تحقق XOR قائمة مرتبة من قيم البايت في قيمة سلامة واحدة من 8 بت. أدخلوا أعدادًا صحيحة من 0 إلى 255 لتحصلوا على النتيجة بالصيغ العشرية والسداسية عشرية والثنائية، مع تعبير واضح يبين العملية.
شغّل الأداة مجانًا
يشيع هذا الفحص في الرسائل التسلسلية الموجزة وأوامر الأجهزة المضمنة وتنسيقات البيانات القديمة وبروتوكولات LRC البسيطة لأنه لا يحتاج إلا إلى قدر ضئيل من المعالجة. تفيد الحاسبة في مراجعة الأمثلة وتصحيح الإطارات وإعداد متجهات الاختبار وإعادة تنفيذ مواصفات البروتوكول من دون كتابة برنامج مؤقت.
كيفية حساب قيمة تحقق XOR
يبدأ الحساب بمجمّع قيمته صفر، ثم يطبق عملية أو الحصرية على مستوى البتات على كل بايت بالتتابع. في كل موضع تنتج XOR واحدًا عندما يختلف البتان المقارنان، وصفرًا عندما يتطابقان. بعد تكرار العملية يبقى بايت واحد. تلغي القيمة نفسها إذا طُبقت مرتين لأن x XOR x تساوي صفرًا، بينما لا يغير XOR مع الصفر القيمة. العملية تجميعية وتبادلية، ولذلك لا يغير تجميع البايتات المختارة أو إعادة ترتيبها النتيجة، لكن مواصفات البروتوكول هي التي تحدد الحقول الداخلة في الحساب. تتحقق هذه الحاسبة من أن كل عنصر عدد صحيح بين 0 و255، ثم تمر على القائمة وتعرض القيمة ذاتها بثلاث صيغ. تناسب الصيغة العشرية واجهات API العامة، وتتوافق السداسية عشرية مع تفريغ الحزم وأوراق البيانات، وتكشف الصيغة الثنائية ذات الخانات الثماني كل بت. كما يسجل التعبير المعاد جميع المدخلات والنتيجة السداسية النهائية لتسهيل المراجعة.
اختيار البايتات الصحيحة من الرسالة
الحساب بسيط، لكن اختيار الجزء الصحيح من الإطار هو أكثر أسباب الاختلاف شيوعًا. راجعوا تعريف البروتوكول لتحديد ما إذا كانت علامة البداية والعنوان والأمر وطول الحمولة والحمولة وحقل التحقق الموجود وعلامة النهاية تدخل في الحساب. يُستبعد بايت التحقق نفسه عادة، غير أن الأعراف تختلف. حولوا الثمانيات السداسية مثل 7E و01 وA4 إلى أعداد صحيحة قبل إرسالها؛ فهي تصبح 126 و1 و164. لا ترسلوا رموز المحارف إلا إذا كان البروتوكول يفحص نصًا مرمزًا صراحة. فالمحرف ASCII «7» يمثل عادة البايت 55، أما الحقل العددي ذي القيمة سبعة فقيمته 7، وهما مدخلان مختلفان. تحتاج الأعداد متعددة البايت كذلك إلى ترتيب الإرسال الصحيح حسب نمط ترتيب البايت. ابنوا القائمة تمامًا كما تُرسل عبر الوصلة، ثم قارنوا القيمة السداسية المعادة بالإطار أو الدليل. ويساعد عدد البايتات في كشف أي حقل سقط أو أضيف مرتين.
ما الذي يثبته هذا الفحص وما حدوده
تفيد قيمة تحقق XOR عندما يحتاج البروتوكول إلى فحص سريع جدًا وينص أصلًا على هذه الخوارزمية. فهي تكشف أي تغير في بت واحد وكثيرًا من التغيرات العرضية الأخرى، لذا تلائم تشخيص الإطارات التسلسلية القصيرة والأجهزة محدودة الموارد. لكنها أضعف بكثير من CRC أو التجزئة التشفيرية. قد يلغي خطآن متماثلان في بايتين مختلفين أحدهما الآخر، ولا يغير تبديل ترتيب البايتات النتيجة، كما يستطيع المهاجم تعويض تعديل متعمد في موضع آخر. تعاملوا مع الناتج بوصفه قيمة للتوافق واستكشاف الأعطال، لا دليلًا على أصالة البيانات أو حمايتها من العبث. عند تصميم بروتوكول جديد، استخدموا CRC محددًا جيدًا لأخطاء النقل أو رمز توثيق رسالة عندما يكون الأمان مهمًا. وللاختبارات القابلة للتكرار، احفظوا القائمة الدقيقة والتعبير المعاد في fixture. ينفذ المتصفح المنطق الحتمي نفسه الذي تنفذه API، وتكلف كل مكالمة آلية $0.002، ولذلك تتطابق نتائج الفحص التفاعلي وخطوط الاختبار.
حالات الاستخدام
تصحيح إطار تسلسلي
أعيدوا حساب قيمة التحقق للحقول المحددة وقارنوها بالبايت المستلم من الجهاز.
إنشاء متجهات اختبار
ولدوا نتائج ثابتة بالصيغ العشرية والسداسية والثنائية لاختبارات البرامج الثابتة وبرامج التشغيل والتكامل.
التحقق من أوامر الأنظمة المضمنة
افحصوا الحزمة قبل الإرسال وتأكدوا من مطابقة التحويلات واختيار الحقول لدليل الجهاز.
الأسئلة الشائعة
ما القيم التي يمكن إدخالها؟
أدخلوا مصفوفة غير فارغة من أعداد صحيحة بين 0 و255. يمثل كل عدد بايتًا واحدًا بالضبط.
هل يؤثر ترتيب البايتات في نتيجة XOR؟
لا، فعملية XOR تبادلية، لكن ينبغي الحفاظ على ترتيب النقل عند توثيق الإطار أو تصحيحه.
هل يجب تضمين بايت التحقق نفسه؟
اتبعوا المواصفات. تستبعده معظم الحسابات، لكن بعض طرق التحقق تعالج الإطار كاملًا وتتوقع باقيًا محددًا.
هل هذه العملية هي CRC نفسها؟
لا. تستخدم CRC القسمة متعددة الحدود وتكشف فئات أوسع من الأخطاء. أما XOR فأخف معالجة وأضعف بكثير.
هل يمكن إدخال سلاسل سداسية عشرية؟
يقبل العقد قيم بايت صحيحة. حولوا كل ثمانية سداسية عشرية إلى العدد الصحيح المقابل قبل استدعاء الحاسبة.
كم تبلغ تكلفة الحساب عبر API؟
تبلغ تكلفة كل طلب API مقدار $0.002. ويمكن استخدام حاسبة المتصفح للفحوص التفاعلية.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/elec/xor-checksum \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":[72,101,108,108,111]}'const res = await fetch("https://api.kit.forhosting.com/elec/xor-checksum", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bytes": [
72,
101,
108,
108,
111
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/xor-checksum",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bytes": [
72,
101,
108,
108,
111
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/xor-checksum", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bytes":[72,101,108,108,111]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bytes":[72,101,108,108,111]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/xor-checksum", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"bytes": [
72,
101,
108,
108,
111
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.xor_checksum",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 65536 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |