كيف تضع بذرة Messagedigest؟
-
25-09-2019 - |
سؤال
تنفذ فئة Messagedigest خوارزمية SHA-1 (من بين أشياء أخرى كثيرة). تتيح خوارزمية SHA-1 لأحد استخدام "بذور" مختلفة أو هضم أولي. نرى Sha-1 psuedocode
تقوم الخوارزمية بتهيئة المتغيرات ، أو البذرة:
Initialize variables:
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0
ومع ذلك فئة MessageDigest ، كما هو موضح في دليل جافا على الانترنت, ، لا يوفر أي واجهة برمجة تطبيقات لتعيين هذه المتغيرات الأولية. في الواقع ، لا يوضح قيمة المتغيرات الأولية.
كيف يمكنني ضبط البذور الأولية لخوارزمية SHA-1؟
أين مثال على SHA-1 في جافا ، باستخدام بذرة أولية?
(أنا أبحث عن تطبيق SHA-1 ، ما لم يستخدم المثال MessageDigest
مع بذرة أولية بديلة.)
المحلول 2
لا يمكن توفير وظيفة Java مع بذرة أولية.
لقد قمت بنسخ تنفيذ خوارزمية SHA-1 وقمت بتعديلها للسماح بتغيير قيم البذور الأولية.
نصائح أخرى
أين ترى الحاجة إلى بذرة في Digest SHA-1؟ عادة في خوارزمية التشفير مع الحاجة إلى مصدر للأرقام العشوائية ، هناك حاجة إلى البذور. ولكن في SHA-1 ، لا تستخدم حتى أرقام عشوائية على الإطلاق ، لذلك لا يوجد بذرة أو متجه أولي لضبطها. المتغيرات التي ذكرتها هي "صلبة" (ثوابت) ، فهي جزء من الخوارزمية ، لا حاجة أو استخدام لتغيير قيم H0-4.
أوصي باستخدام ملح بدلاً من بذرة لوظائف تجزئة عائلة Messagedigest. يتم تطبيق الملح ، على سبيل المثال ، مسبقًا بايت الملح على المدخلات.
يعد إعداد الملح أكثر قوة أيضًا من تحديد قيم البذور مباشرة ، لأنه بالإضافة إلى تغيير الحالة الداخلية للتجزئة ، إذا لم يكن الملح مضاعفًا لحجم كتلة الهضم ، فقد يؤدي أيضًا إلى إزعاج المحاذاة التي يكون بها المدخلات تغذية في وظيفة التجزئة.