تجزئة Keccak-256
خصوصية بالتصميم — يعمل بالكامل في متصفحك
ضع أي سلسلة UTF-8 في صندوق الإدخال لتحصل على موجز Keccak-256 بطول 32 بايت. تستخدمها Ethereum في كل مكان: عناوين EIP-55، ومحددات الدوال، واشتقاق فتحات التخزين، وعناوين العقود عبر CREATE2.
Keccak-256 مقابل SHA3-256
كانت Keccak-256 هي ما قدّمته Keccak إلى NIST قبل أن تصبح SHA3. غيّر المعيار النهائي قواعد الحشو، إذ كسبت تقنية multi-rate padding بتّين إضافيتين، فاختلفت مخرجات SHA3-256 وKeccak-256 لنفس المدخل. أبقت Ethereum على Keccak الأصلية لكي تتطابق التجزئات على السلسلة مع المحافظ والمفهرسين وأدوات الاستكشاف التي تستخدم Keccak-256 أيضًا.
أين تستخدمها Ethereum
محددات الدوال هي أول 4 بايتات من keccak256("transfer(address,uint256)") وما يماثلها من التوقيعات الكنسية. تشتق فتحات التخزين الخاصة بـ mapping من keccak256(abi.encode(key, slot)). يعتمد EIP-55 على keccak256 للعنوان بأحرف صغيرة لتقرير حالة الأحرف، وتُحسب عناوين العقود من CREATE2 بـ keccak256 فوق المُنشِر والملح والـ bytecode.
كيف يعمل التطبيق
تحمل الصفحة تطبيقًا مدمجًا لتبديل Keccak-f[1600] بلغة JavaScript، إذ لا توفّر Web Crypto هذه الخوارزمية. يمكنك التحقق بمقارنة موجز السلسلة الفارغة المعروف c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. لا تغادر المدخلات والمخرجات هذه التبويبة.
الأسئلة الشائعة
- هل Keccak-256 هي ذاتها SHA3-256؟
- لا. Keccak-256 هي ما قدّمته Keccak إلى NIST، فيما أضافت SHA3-256 بتّين من الحشو قبل اعتمادها. المدخل ذاته يُنتج مخرجًا مختلفًا، وتستخدم Ethereum وEVM Keccak-256 الأصلية.
- أين تظهر داخل Ethereum؟
- في محددات الدوال، واشتقاق فتحات التخزين، واختبارات EIP-55، وعناوين CREATE2 الحتمية، ومعظم مخططات التوقيع التي تتطلب موجزًا بطول 256 بتًا.
- كيف يمكنني التحقق من التطبيق؟
- قِم بتجزئة السلسلة الفارغة وقارن النتيجة بـ c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. أي اختلاف يدل على خطأ في الحشو أو الخوارزمية.
- هل المخرجات حتمية لنفس المدخل؟
- نعم. Keccak-256 دالة محضة، ويُنتج تسلسل البايتات UTF-8 ذاته نفس الموجز ذي 32 بايتًا بصرف النظر عن المتصفح أو الجلسة.
- هل تسجّل Toova مدخلاتي؟
- لا. تُحسَب التجزئة محليًا داخل هذه التبويبة، ولا تُرسَل السلسلة ولا الموجز إلى أي خادم.
- هل يمكنني استخدامها لترميز ABI؟
- احسب Keccak-256 للتوقيع الكنسي للدالة مثل transfer(address,uint256) — وهو ذاته البادئة المؤلفة من 4 بايتات التي تنتظرها المحددات — ثم خذ أول 4 بايتات من الناتج.