سؤال

تنفذ فئة 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. يتم تطبيق الملح ، على سبيل المثال ، مسبقًا بايت الملح على المدخلات.

يعد إعداد الملح أكثر قوة أيضًا من تحديد قيم البذور مباشرة ، لأنه بالإضافة إلى تغيير الحالة الداخلية للتجزئة ، إذا لم يكن الملح مضاعفًا لحجم كتلة الهضم ، فقد يؤدي أيضًا إلى إزعاج المحاذاة التي يكون بها المدخلات تغذية في وظيفة التجزئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top