العربية

أدوات المطورين · SHA حاسبة التجزئة

كيف يقوم SubtleCrypto.digest بحساب تجزئة SHA-256 في المتصفح

· كيف يعمل

شا-256 التشفير متصفح API

UTF-8 بايت عند الدخول إلى المتصفح SHA-256 الاستيعاب والخروج بالنظام الست عشري
الرسم التوضيحي المتجه الأصلي ToolAcre

يمكن لكل متصفح حديث تجزئة وحدات البايت محليًا من خلال Web Crypto. يتبع هذا المنشور سلسلة واحدة من TextEncoder حتى crypto.subtle.digest إلى ملخص سداسي عشري، ويشرح قيود كل خطوة.

تجزئة بدون تثبيت npm - الحالات التي يتفوق فيها الملخص الأصلي على مكتبة مجمعة

يمكنك حساب ملخص لقيمة نصية قصيرة دون تثبيت حزمة تجزئة أو نشر البيانات إلى موقع ويب تجزئة بعيد. تعرض المتصفحات crypto.subtle.digest على أصول آمنة. التجزئة هي بصمة حتمية ذات طول ثابت للبايتات؛ ولا يخفي المدخلات أو يثبت من قام بتوفيرها. يستخدم ToolAcre تطبيق المتصفح بدلاً من شحن خوارزمية SHA المكتوبة بخط اليد، ويحافظ على تجزئة السلسلة في علامة التبويب.

النص ليس بايت — يتم تشفير الإدخال باستخدام TextEncoder إلى UTF-8 قبل التجزئة، ولماذا تحدد هذه الخطوة الإجابة

النص "café" ووحدات البايت التي يتم إدخالها في التجزئة ليست من نفس النوع من الكائنات. يقوم TextEncoder بتعيين السلسلة إلى UTF-8 بايت (63 61 66 C3 A9 للمقهى)، في حين أن التحويل اللاتيني الساذج 1 قد يستخدم E9 للحرف النهائي وينتج ملخصًا مختلفًا. حتى النص المتطابق بصريًا يمكن أن يحتوي على نماذج تسوية Unicode مختلفة. اتفق على التشفير والتسوية قبل مقارنة التجزئات عبر JavaScript وCLI والخادم. يقوم وضع النص الخاص بـ ToolAcre بإجراء تحويل UTF-8 بشكل صريح قبل التجزئة.

استدعاء الملخص — crypto.subtle.digest مع اسم خوارزمية وArrayBuffer، وسبب إرجاعه للوعد

crypto.subtle.digest("SHA-256"، بايت) يُرجع وعدًا لأن عمل التشفير قد يكون غير متزامن؛ انتظره قبل قراءة الإخراج. تأخذ الطريقة المخزن المؤقت للإدخال بالكامل بدلاً من مكرر التدفق. SHA-256 يُصدر 256 bits (32 bytes) بغض النظر عما إذا كان الإدخال يحتوي على ثلاثة أحرف أو ثلاثة ملايين. يعني تقييد السياق الآمن أن HTTPS أو المضيف المحلي مطلوب لـ SubtleCrypto API، وتبلغ الأداة عن غيابه بدلاً من اختراع بديل.

من ArrayBuffer إلى hex — تحويل وحدات البايت الناتجة إلى سلسلة أحرف 64 التي يتعرف عليها الأشخاص

يتم حل الوعد إلى ArrayBuffer من البايتات، وليس السلسلة المألوفة من الأرقام السداسية. قم بتحويل كل بايت إلى حرفين أساسيين 16 مع صفر بادئ حسب الحاجة، مما ينتج عنه بالضبط 64 أحرف صغيرة لـ SHA-256. يؤدي هذا التمثيل السداسي إلى مضاعفة طول 32 bytes، ولكنه لا يغير الملخص. يمكن أن يمثل Base64 نفس 32 bytes بشكل أكثر إحكاما؛ لا تكون المقارنة منطقية إلا بعد التأكد من تطابق الخوارزمية وترميز الإدخال وتمثيل الإخراج.

مثال عملي - تجزئة سلسلة قصيرة خطوة بخطوة، مع إظهار البايتات في كل مرحلة

بالنسبة للنص ASCII abc، ينتج عن UTF-8 البايتات 61 62 63. SHA-256 من هذه البايتات بالضبط هو ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. اختبر هذا في ToolAcre وتنفيذ تجزئة موثوق آخر: تغيير abc إلى abc متبوعًا بسطر جديد يعطي نتيجة مختلفة. إذا اختلفت المخرجات، فافحص المسافة البيضاء المخفية وترميز البايت قبل الشك في التشفير البدائي. الملخص المعروض هو ناقل اختبار قابل للتكرار، وليس ادعاء بأن ABC سر.

السياقات الآمنة - لماذا يتوفر crypto.subtle فقط على HTTPS والمضيف المحلي

crypto.subtle هو سياق آمن API. تعرضها صفحة الإنتاج HTTPS وصفحة تطوير المضيف المحلي بشكل عام؛ قد لا تتمكن صفحة HTTP البعيدة العادية وغير الآمنة من ذلك. تحتاج الأداة أيضًا إلى ذاكرة كافية لاستيعاب الإدخال والإخراج. عندما لا يكون Web Crypto متاحًا، فإن التبديل بصمت إلى تجزئة JavaScript غير الخاضعة للمراجعة من شأنه أن يجعل النتيجة الحساسة للأمان تعتمد على تنفيذ مختلف. افشل بوضوح واختر بيئة آمنة بدلاً من ذلك.

ما لا يغطيه هذا هو التجزئة ذات المفاتيح (HMAC) والتجزئة المتزايدة للمدخلات الكبيرة جدًا، والتي لا يوفرها الملخص دفعة واحدة API

الملخص دفعة واحدة API ليس تجزئة تزايدية للملفات الضخمة. SHA-256 ليس نظامًا لتخزين كلمات المرور: فالتجزئات السريعة غير المملحة تجعل التخمين رخيصًا، لذا فإن تخزين كلمات المرور يحتاج إلى KDF مصمم خصيصًا لهذا الغرض ومملح ومكلف عمدًا. قد يتم عرض SHA-1 لقابلية التشغيل التفاعلي القديمة، ولكن مقاومة الاصطدام الخاصة بها مكسورة ولا تعد خيارًا جيدًا لأنظمة التكامل أو التوقيع الجديدة. HMAC هي عملية مصادقة باستخدام المفاتيح، وليست نفس عملية استيعاب وحدات البايت غير المصادقة.

الوجبات الجاهزة: يحتوي المتصفح بالفعل على وظيفة تجزئة - تستخدم حاسبة التجزئة ToolAcre SHA هذه الوظيفة بالضبط API، لذا فإن ناتجها هو ملك للمتصفح

يوفر المتصفح بالفعل SHA-256: تشفير النص بالبايت، وانتظار الملخص، ثم تنسيق النتيجة للمقارنة. ToolAcre SHA تتبع حاسبة التجزئة هذا المسار للنص الملصق والتسميات SHA-1 باعتبارها قديمة فقط. قارن ABC بالنتيجة المعروفة أولاً، ثم قم بتجزئة المادة الفعلية غير الحساسة التي تفهم بايتها وترميزها.