# البصمة والمجموع التحقّقي — MD5 وSHA-1 وSHA-256 وSHA-512

افحص تنزيلاً في مقابل الرقم الذي نشره الناشر، دون أن ترسله إلى أحد.

> احسب MD5 أو SHA-1 أو SHA-256 أو SHA-384 أو SHA-512 لأي ملف وقارنه بالمجموع التحقّقي الذي نشرته صفحة التنزيل. يُقرأ الملف في متصفحك ولا يُرفَع أبداً، بأي حجم كان.

هذه الصفحة أداة تفاعلية تعمل بالكامل داخل متصفحك، على العنوان https://abox.tools/ar/حساب-قيمة-التجزئة/ — ولا يُرفَع أي شيء تعطيه إياها. وفيما يلي كل ما تقوله الصفحة عن الأداة بالكلمات؛ لاستخدامها، افتح العنوان.

## ملفاتك لا تُرفع **أبدا**. لا يوجد خادم.

المجموع التحقّقي حسابٌ على بايتات ملفك، وهو يجري هنا، في هذه الصفحة، على معالجك أنت. يُقرأ الملف من قرصك أربعة ميغابايتات في كل مرة وتُرمى كل قطعة ما إن تُحسَب، فلا يُجمَّع شيء في أي مكان أبداً — لا في الذاكرة، ولا على خادم قطعاً. ولا يقف في الطرف الآخر من هذه الصفحة خادم يُرسَل إليه ملف، حتى لو أراد شيء هنا ذلك.

- ✗ بلا رفع
- ✗ بلا حدّ للحجم
- ✓ يعمل دون اتصال
- ✓ مفتوح المصدر
- ✓ الملفات تبقى على جهازك

## كيف تفحص تنزيلاً في مقابل مجموعه التحقّقي

1. **اختر الملف.** أفلِته على المُنتقي، أو اختره يدوياً. يُقرأ من قرصك قطعاً مباشرة؛ ولا يُرسَل شيء إلى أي مكان أثناء ذلك، وليس ثمّة حجم تستسلم عنده الصفحة.
2. **دعه يُقرأ.** يُحسَب MD5 وSHA-256 افتراضياً، في مرور واحد. ويعرض الشريط أين بلغ من الملف وبأي سرعة يمضي ذلك — وصورةُ قرص كبيرة تستغرق نحو ما كان سيستغرقه نسخُها، لأنه القدر نفسه من القراءة.
3. **الصق ما ينبغي أن يكون.** أياً كان ما أعطتك إياه صفحة التنزيل، وبأي هيئة: ست عشرية مجرّدة، أو سطراً من خَرج `sha256sum`، أو ملفَّ `SHA256SUMS` كاملاً، أو خاصية `integrity` من وسم نصّ برمجي. وأيُّ خوارزمية هي يتبع طولَها، والمربع الصحيح يؤشّر على نفسه.
4. **اقرأ الجواب، لا اللون.** تقول الصفحة في جملة هل هذا هو الملف الذي يصفه ذلك المجموع التحقّقي. فالمطابقة تعني أن البايتات مطابقة للتي قاسها الناشر. وعدمُها يعني أنها ليست كذلك، وأن التنزيل ينبغي أن يُجلَب من جديد قبل أن يُفتَح.
5. **خذ المجاميع التحقّقية إن احتجت إليها.** انسخ واحداً، أو انسخها كلها، أو احفظها ملفاً نصّياً صغيراً بالهيئة الموسومة التي تكتبها أدوات سطر الأوامر، فتسافر الخوارزمية مع الرقم.

## النسخة الأطول

[كيف تفحص تنزيلاً في مقابل مجموعه التحقّقي](https://abox.tools/ar/أدلة/التحقق-من-قيمة-تجزئة-الملف/): كيف تفحص مجموعاً تحقّقياً من نوع MD5 أو SHA-256 على Windows وmacOS وLinux أو في متصفحك، وماذا تثبت المطابقةُ فعلاً، والخطأُ الذي يجعل التمرين كلَّه بلا معنى.

## أيضا في الصندوق

- [مولّد كلمات المرور والعبارات](https://abox.tools/ar/مولد-كلمات-المرور/): مصنوعة هنا، بمتصفحك أنت، ولا تُرسَل إلى أي مكان أبداً. ولا يُخزَّن شيء ولا سجلّ لها.
- [منسِّق JSON](https://abox.tools/ar/تنسيق-json/): JSON وXML وHTML وCSS وYAML، منسَّقة أو محوَّلة. ولا شيء يُلصَق في خادم أحد آخر.
- [محوّل YAML إلى JSON](https://abox.tools/ar/تحويل-yaml-الى-json/): الاتجاهان معاً، ويقول لك ثمن كلّ منهما. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.
- [مُنسّق XML](https://abox.tools/ar/تنسيق-xml/): ‏XML منشور ليُقرأ أو مضغوط ليُرسَل، ومحوَّل إلى JSON في الاتجاهين. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.

## أسئلة

### هل يُرفع ملفي إلى أي مكان؟

لا. يُقرأ من قرصك بمتصفحك أنت ويُبصَم على معالجك أنت، أربعة ميغابايتات في كل مرة. ولا جانب خادمَ لهذه الأداة، و `Content-Security-Policy` الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به — وليس واحد منها لنا. اقطع الاتصال بالشبكة وستظل تعمل.

### هل ثمّة حدّ للحجم؟

لا. فالملف لا يُحفَظ كاملاً أبداً: يُقرأ قطعاً وتُحسَب كل قطعة وتُسقَط، فصورةُ قرص بأربعين غيغابايتاً تستعمل الميغابايتات القليلة نفسها التي يستعملها ملف نصّي. والذي تكلّفه هو الوقت، والصفحة تقول لك كم وهي تمضي. \
\
وهذا هو سبب كتابة الخوارزميات هنا بدل مناولتها إلى `crypto.subtle.digest` الخاصة بالمتصفح، وهي أسرع. فذلك الاستدعاء يأخذ الرسالة كلها في مخزن واحد ولا سبيل إلى إطعامه ملفاً قطعاً، فاستعمالُه كان سيضع أكبر ملف تستطيع فحصه تحت رحمة قدر الذاكرة الذي يُسمَح لهذا التبويب به. وعلى هاتف ذلك بضع مئات من الميغابايتات، والملف الذي يريد الناس فحصه أكثر من غيره صورةُ قرص.

### طابق المجموع التحقّقي. فماذا أثبت ذلك فعلاً؟

أن البايتات التي على قرصك هي البايتات التي قاسها أحدهم حين كتب ذلك الرقم. لا أكثر، والدقّة في الحدود جديرة بالذكر. \
\
فهو يثبت أن التنزيل لم يُبتَر ولم يُفسده قرص معطوب ولم يُستبدَل به شيء في الطريق. ولا يثبت **أن** الملف آمن، لأن الناشر يستطيع قياس برمجية خبيثة بالدقة نفسها التي يقيس بها أي شيء. ويثبت القليل جداً إن كان المجموع التحقّقي جاء من الصفحة نفسها، عبر الاتصال نفسه، الذي جاء منه الملف: فمن استطاع تغيير أحدهما استطاع تغيير الآخر. والمجموع التحقّقي أثمن ما يكون حين يصلك بطريق آخر — ملفُّ `SHA256SUMS` موقَّع، أو إعلانُ إصدار من توزيعة، أو مرآةٌ ثانية، أو مدير حزم يعرفه أصلاً.

### لم يطابق. فماذا الآن؟

نزِّله من جديد أولاً، من المكان نفسه. فالنقلُ المقطوع أو المستأنَف هو السبب الأشيع بفارق كبير، والنسخة الثانية تحسم الأمر عادةً. \
\
فإن أعطت النسخة الثانية الجواب الخطأ نفسه، فتأكّد أنك تقارن بالسطر الصحيح: فصفحات الإصدار تسرد عدة ملفات، والمجموع التحقّقي لبناء ARM لن يطابق بناء x86 أبداً. ثم تأكّد من رقم الإصدار. فإن كان ذلك كله صحيحاً وما زال لا يطابق، فلا تفتح الملف. اجلبه من مرآة أخرى وقارن المجموعين التحقّقيين أحدهما بالآخر.

### أيّها ينبغي أن أستعمل؟

أيّها نشره الناشر. فمغزى العملية المقارنةُ برقمه، ولا تستطيع أن تختار رقمه نيابةً عنه. \
\
وإن كنت تنتج مجموعاً تحقّقياً لا تفحص واحداً، فاستعمل SHA-256. فـ MD5 وSHA-1 مكسوران بالمعنى الذي يهمّ: إذ يمكن بناءُ ملفين مختلفين لهما البصمة نفسها عمداً، في ساعات على MD5 وبكلفة معتدلة على SHA-1. ولا يجعلهما ذلك عديمَي النفع في مقابل الحوادث — فالتنزيل المبتور لن يتصادم مع الأصل مصادفةً — لكنه يعني أن أياً منهما لا يستطيع أن يقول لك إن أحداً لم يعبث. أما SHA-384 وSHA-512 فلا بأس بهما ولا هما أحسن عملياً؛ وهما هنا لأن بعض المشاريع تنشرهما.

### لماذا MD5 هنا أصلاً إن كان مكسوراً؟

لأنه ما زال هو المنشور. فالمرايا وتنزيلاتُ البرامج الثابتة وصفحاتُ برمجيات الجامعات وكثيرٌ جداً من مواقع المورّدين نشرت MD5 قبل عشرين سنة ولم تعاود النظر في الصفحة منذئذ، والأداةُ التي ترفض حساب واحد كانت سترفض الإجابة عن السؤال الذي جاء به زوّارها فعلاً. \
\
والذي تستطيعه بدلاً من ذلك أن تقول كم يساوي الجواب، وهو ما تفعله الملاحظة التي بجانب مربع الاختيار. فـ MD5 الذي يطابق ما زال يستبعد تنزيلاً فاسداً. ولا يستبعد تنزيلاً متعمَّداً.

### ما الهيئات التي أستطيع لصقها في حقل المقارنة؟

كلُّ الهيئات المعتادة، وهو يستنتج أيّها أيّ بنفسه. \
\
ست عشرية مجرّدة، بمسافات فيها أو دونها. أو سطر من خَرج `md5sum` أو `sha256sum`، واسم الملف بعده. أو ملفُّ `SHA256SUMS` كامل بأربعين سطراً، فيكون السطر الذي يُسمّي ملفك هو المستعمَل. أو الهيئة BSD، `SHA256 (disk.iso) = …`. أو تسمية في المقدمة، كـ `SHA-256: …`. أو خاصية تكامل مورد فرعي، `sha384-…`، وهي base64 لا ست عشرية ويُفكّ ترميزها قبل المقارنة. \
\
وأيُّ خوارزمية هي يأتي من طولها: 32 محرفاً ست عشرياً MD5، و40 SHA-1، و64 SHA-256، و96 SHA-384، و128 SHA-512. ولا اثنان منها بالطول نفسه، فلا شيء يُختار ولا شيء يُخطأ فيه.

### هل سيعطي الجواب نفسه الذي يعطيه sha256sum أو certutil؟

نعم، بايتاً بايتاً. فهذه مواصفات دقيقة لها متجهات اختبار منشورة، وكل خوارزمية هنا تُفحَص في مقابل تلك المتجهات وفي مقابل تنفيذ نظام التشغيل نفسه في كل بناء. \
\
والفرق الوحيد الذي ستراه العرض. فـ `certutil -hashfile` في Windows يطبع بالأحرف الكبيرة ويضع مسافات؛ وهذه الصفحة تطبع بالصغيرة، وهو ما يستعمله كل ناشر تقريباً. والمقارنة تتجاهل الاثنين، فالمجموع التحقّقي المنسوخ من certutil يطابق واحداً بالأحرف الصغيرة ملصوقاً هنا.

### هل أستطيع فحص ملفين أحدهما في مقابل الآخر؟

نعم، بخطوة إضافية واحدة: افحص الأول، وانسخ مجموعه التحقّقي، ثم اختر الثاني والصق ذلك المجموع في الحقل. فإن كان الملفان متطابقين قالت الصفحة ذلك. \
\
وذلك جدير بالمعرفة للحالة التي تُحسِنها المجاميع التحقّقية في صمت — تقريرُ هل النسخة التي على قرص النسخ الاحتياطي هي الملف نفسه حقاً الذي على الحاسوب المحمول، حين يدّعي الاثنان الحجم نفسه والتاريخ نفسه.

### هل يغيّر ملفي؟

لا. فهذه الأداة تقرأ لا غير. ولا ملف خَرج ولا إعادة ترميز ولا شيء يُكتَب رجوعاً — والشيء الوحيد الذي تستطيع تنزيله ملفٌّ نصّي صغير يسرد المجاميع التحقّقية. وأصلك على قرصك لم يُمسّ، وهو أيضاً الجواب الصادق عمّا يحدث إن أغلقت التبويب.

### هل هو مجاني، وهل أحتاج إلى حساب؟

هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية. ولا حدّ لحجم الملف ولا لعدد الملفات التي تفحصها. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن ملفك.

### هل يعمل دون اتصال؟

نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فأداةٌ ترسل ملفك بعيداً ليُبصَم كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.

## كيف يمكن التحقق من وعد الخصوصية

- **ملفك لا سبيل له إلى الخروج.** تُسمّي Content-Security-Policy كل عنوان يجوز لهذه الصفحة الاتصال به، وليس واحد منها لنا. فلا يوجد هنا طرفٌ يُجمَع عنده ملفك، ولا في الشيفرة ما يرسله إليه لو وُجد. وقد كان هذا يقول `connect-src 'none'`، وكان مطلقاً؛ فكلّفت إضافةُ الإعلانات ذلك، وقولُه جزء من الصفقة.
- **الملف لا يُحفَظ كاملاً أبداً، بأي حجم كان.** يُقرأ أربعة ميغابايتات في كل مرة وتُحسَب كل قطعة في الحالة الجارية وتُسقَط. فالذاكرة التي تستعملها هذه الصفحة هي هي لصورة قرص بأربعين غيغابايتاً كما هي لملف نصّي، وليس ثمّة حجم تستسلم عنده. وذلك أيضاً سبب عدم استعمال `crypto.subtle.digest` الخاصة بالمتصفح: فهي تريد الملف كله في الذاكرة دفعة واحدة، وذلك بالضبط السقفُ الذي وُجِدت هذه الأداة كي لا يكون لها.
- **خمس خوارزميات، وخمسة ملفات في هذا المستودع.** `src/md5.js` و`src/sha1.js` و`src/sha256.js` و `src/sha512.js` هي المواصفات المنشورة مكتوبةً، نحو ستين سطراً لكل واحدة، وجداولُ الثوابت مكتوبة صراحةً لا محسوبة كي لا يتوقّف شيء من الجواب على متصفحك. وكل واحدة منها تُفحَص في مقابل متجهات الاختبار الرسمية وفي مقابل تنفيذ نظام التشغيل نفسه قبل أن تُشحَن.
- **والمجموع التحقّقي الذي تلصقه لا يُرسَل إلى أي مكان هو الآخر.** يُقارَن هنا، في الصفحة، بالبصمة المحسوبة هنا. ولا يُقرأ على أحد شيء من المقارنة — لا القيمة، ولا هل طابقت، ولا اسم الملف. وذلك أهمّ مما قد يبدو: فالمجموع التحقّقي مع اسم ملف يقول لمن يجمعه بالضبط أي بناء من أي برنامج نزّلت للتوّ.
- **ما تُحمّله Google، وما لا يُعطى لها.** نصوص الإعلانات والقياس تأتي من Google. ولا يُعطى أيٌّ منهما شيئاً عن ملفك: لا الملف، ولا اسمه، ولا حجمه، ولا أيّ من البصمات. وكل سطر يقرأ بايتاً أو يبصمه يُخدَم من هذا الأصل نفسه ومُدرَج في المستودع.
- **ما يُحمّله زر التبرّع، وما لا يُعطى له.** زر «Buy me a coffee» في الترويسة يرسمه نصٌّ برمجي من cdnjs.buymeacoffee.com ويأخذ حروفه من Google Fonts. وهو رابط لا أكثر: لا يبلّغ عن زيارة، ولا يُعطى شيئاً عنك ولا عن ملفاتك. ولا يحدث شيء ما لم تنقره، والذي ستنتقل إليه بالنقر موقعُ شخص آخر.
- **يعمل دون اتصال.** اقطع الاتصال بالشبكة ويظل كل جزء من هذه الصفحة يعمل. وهذا أبسط برهان على الإطلاق: فأداةٌ ترسل ملفك بعيداً ليُبصَم كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.

**تحقّق بنفسك.** لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع `dist` — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر: https://github.com/A-Box-of-Tools/website

الملفات الجديرة بالقراءة أولا هي `config/site.toml` من أجل سياسة أمان المحتوى (Content-Security-Policy)، و`src/md5.js` و `src/sha1.js` و`src/sha256.js` و `src/sha512.js` لدوالّ الضغط الأربع، و `src/blocks.js` للحشو الذي تتشاركه، و`src/hash.js` للحلقة التي تقرأ ملفك قطعاً — وليس في واحد منها سطر يمكن أن يبلغ الشبكة.
