ما هو خوارزمية التجزئة جيدة لبذر وPRNG بسلسلة؟

StackOverflow https://stackoverflow.com/questions/678013

  •  21-08-2019
  •  | 
  •  

سؤال

وأنا أبحث عن خوارزمية التجزئة التي تنتج 31/32 بت وقعت / عدد صحيح بدون إشارة كملخص عن سلسلة UTF8 مع الغرض من استخدام الناتج لبذر وPRNG، مثل حديقة ميلر-كارتا LCG أو وميرسين-الإعصار.

ولقد بحثت في FNV1 وFNV1a، ولكنها توفر قيم قريبة جدا سلاسل مشابهة مختلفة في طابعها الماضي. وأود أن يكون تجزئة تصادم المنخفضة التي يتغير جذريا على الحد الأدنى من التعديلات على سلسلة الإدخال. أداء ليست قضية.

ونهج بلدي الحالي يتكون في LCG القذرة التي تستخدم رموز الأحرف وعدد الوزراء باعتباره مضاعفات:

a = 524287;
for ( i = 0; i < n; i ++ )
a = ( a * string.charCodeAt ( i ) * 16807 + 524287 ) % 2147483647;

واسمحوا لي أن أعرف أي بدائل أفضل.

هل كانت مفيدة؟

المحلول

إذا كنت توليد قيمة 32 بت، والنظر في استخدام CRC32 الكلاسيكية. والمفترض أن يكون FNV بديل سريع لاتفاقية حقوق الطفل، وتقوله، أن أداء ليست قضية.

نصائح أخرى

استخدم SHA-2

ومن أحسن / أحدث خوارزمية التجزئة هناك. فمن المستحسن دائما أن يذهب مع خوارزميات القياسية.

وأي تجزئة قوية التشفير سيكون الخصائص التي تريد، ولكن توليد المزيد من بت، ولكن اقتطاع بسيط من النتيجة إلى 32 بت يكون على ما يرام. أفترض قوة التشفير ليست الاحتياج الفعلي بحيث معيبة (ولكن على نطاق واسع المستخدمة) مخططات التجزئة مثل MD5 ستكون كافية - ومتاحة بسهولة في العديد من المكتبات

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