هل يُرفع ملفي إلى أي مكان؟
لا. يُقرأ من قرصك بمتصفحك أنت ويُبصَم على معالجك أنت، أربعة ميغابايتات في كل مرة. ولا جانب خادمَ لهذه الأداة، و 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 يطابق واحداً بالأحرف الصغيرة ملصوقاً هنا.
هل أستطيع فحص ملفين أحدهما في مقابل الآخر؟
نعم، بخطوة إضافية واحدة: افحص الأول، وانسخ مجموعه التحقّقي، ثم اختر الثاني والصق ذلك المجموع في الحقل. فإن كان الملفان متطابقين قالت الصفحة ذلك.
وذلك جدير بالمعرفة للحالة التي تُحسِنها المجاميع التحقّقية في صمت — تقريرُ هل النسخة التي على قرص النسخ الاحتياطي هي الملف نفسه حقاً الذي على الحاسوب المحمول، حين يدّعي الاثنان الحجم نفسه والتاريخ نفسه.
هل يغيّر ملفي؟
لا. فهذه الأداة تقرأ لا غير. ولا ملف خَرج ولا إعادة ترميز ولا شيء يُكتَب رجوعاً — والشيء الوحيد الذي تستطيع تنزيله ملفٌّ نصّي صغير يسرد المجاميع التحقّقية. وأصلك على قرصك لم يُمسّ، وهو أيضاً الجواب الصادق عمّا يحدث إن أغلقت التبويب.
هل هو مجاني، وهل أحتاج إلى حساب؟
هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية. ولا حدّ لحجم الملف ولا لعدد الملفات التي تفحصها. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن ملفك.
هل يعمل دون اتصال؟
نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فأداةٌ ترسل ملفك بعيداً ليُبصَم كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.