سؤال

أنا أعمل مع نظام ملفات صغير FAT16 ، وأريد إنشاء قيم CRC لملفات XML Indidual التي تخزن معلومات تكوين المتجر. في حالة تغير البيانات أو تالفة ، أريد أن أكون قادرًا على التحقق من اتفاقية حقوق الطفل لتحديد أن الملف لا يزال في حالته الأصلية.

والسؤال هو ، كيف أضع قيمة CRC في الملف ، دون تغيير قيمة CRC للملف نفسه؟ يمكنني التفكير في حلول زوجين ، لكنني أعتقد أنه يجب أن يكون هناك حل قياسي إلى حد ما لهذه المشكلة.

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

المحلول

يمكنك إلحاق قيمة CRC إلى نهاية الملف. ثم ، عند حساب قيمة CRC لاحقًا للتحقق ، حذف البايتات الأربعة الأخيرة.

نصائح أخرى

حدد رأسًا ، وإنشاء CRC لكل شيء باستثناء الرأس ثم ضع القيمة في الرأس.

الحل الشائع هو مجرد استخدام ملفات مختلفة. جنبا إلى جنب مع كل ملف ، ببساطة يحتوي على ملف له نفس اسم الملف بامتداد مختلف. على سبيل المثال: foobar.txt و foobar.txt.md5 (أو .crc).

الحل الشائع الذي يستخدم على نطاق واسع في بروتوكولات الاتصال هو تعيين حقل CRC على 0 ، حساب CRC ثم وضعه بدلاً من 0. CRC ومقارنة.

أيضًا ، بالنسبة إلى ملف فحص ، أوصي بشدة MD5 بدلاً من CRC.

يتمثل أحد الحلول في استخدام dsofile.dll لإضافة خصائص ممتدة إلى ملفاتك. يمكنك حفظ قيمة CRC (تم تحويلها إلى سلسلة) كخاصية ملف ممتدة. بهذه الطريقة لا تغير بنية الملف.

dsofile.dll هو DLL ActiveX بحيث يمكن استدعاؤه من لغات مختلفة ، ومع ذلك فهو يقتصر على تشغيل Windows. إليك مزيد من المعلومات حول dsofile.dll: http://support.microsoft.com/kb/224351

لن أخزن اتفاقية حقوق الطفل في الملف نفسه. سيكون لدي ملف واحد (أود استخدام تنسيق XML) الذي يستخدمه البرنامج ، مع قائمة أسماء الملفات وقيم CRC المرتبطة بها. لا حاجة لجعلها معقدة.

لا توجد طريقة لانجاز ذلك. يمكنك جعل أول X Bytes (يستخدم CRC عددًا صحيحًا 32 بت ، لذلك 4 بايت) من الملف يحتوي على CRC ، ثم عند حساب CRC الخاص بك ، يمكنك فقط النظر في البايتات التي تأتي بعد تلك البايتات الـ 4 الأولية.

حل آخر هو تضمين CRC في اسم الملف. لذلك سوف ينتهي myfile.config بأنه myfile.crc1234567.config.

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