2008-10-28 18 views
8

मैं एक छोटी FAT16 फाइल सिस्टम के साथ काम कर रहा हूं, और मैं इंडिकुअल एक्सएमएल फाइलों के लिए सीआरसी मान उत्पन्न करना चाहता हूं जो कॉन्फ़िगरेशन जानकारी संग्रहीत करते हैं। यदि डेटा में परिवर्तन या दूषित हो जाता है, तो मैं यह निर्धारित करने के लिए सीआरसी जांचने में सक्षम होना चाहता हूं कि फ़ाइल अभी भी मूल स्थिति में है।सीआरसी फाइलों के लिए चेक

सवाल यह है कि, मैं फ़ाइल के सीआरसी मूल्य को बदले बिना सीआरसी मान को फ़ाइल में कैसे डालूं? मैं कुछ समाधानों के बारे में सोच सकता हूं, लेकिन मुझे लगता है कि इस मुद्दे के लिए काफी मानक समाधान होना चाहिए।

उत्तर

8

आप फ़ाइल के अंत में सीआरसी मान जोड़ सकते हैं। फिर, जांच के लिए बाद में सीआरसी मान की गणना करते समय, अंतिम चार बाइट्स को छोड़ दें।

5

शीर्षलेख को परिभाषित करें, शीर्षलेख को छोड़कर सब कुछ का सीआरसी उत्पन्न करें, फिर मान को हेडर में रखें।

0

ऐसा करने का कोई तरीका नहीं है। आप फ़ाइल के पहले एक्स बाइट्स (सीआरसी 32 बिट पूर्णांक का उपयोग करता है, इसलिए 4 बाइट्स) का उपयोग कर सकते हैं, और फिर सीआरसी की गणना करते समय, आप केवल प्रारंभिक 4 बाइट्स के बाद आने वाले बाइट्स पर विचार कर सकते हैं।

सीआरसी फ़ाइल नाम में शामिल करने का एक और समाधान होगा। तो MyFile.Config MyFile.CRC1234567 होने के समाप्त हो जाएगा। कॉनफिग।

1

एक समाधान dsofile.dll का उपयोग करने के लिए आपकी फ़ाइलों में विस्तारित गुण जोड़ने के लिए होगा। आप विस्तारित फ़ाइल प्रॉपर्टी के रूप में सीआरसी मान (स्ट्रिंग में कनवर्ट) को सहेज सकते हैं। इस तरह आप फ़ाइल की संरचना नहीं बदलते हैं।

dsofile.dll एक ActiveX डीएल है इसलिए इसे विभिन्न भाषाओं से बुलाया जा सकता है, हालांकि यह आपको विंडोज़ पर चलने के लिए सीमित करता है। Dsofile.dll पर अधिक जानकारी यहां दी गई है: http://support.microsoft.com/kb/224351

+0

मुझे विश्वास है कि dsofile.dll केवल 'संरचित संग्रहण' फ़ाइलों के साथ काम करता है। –

4

एक सामान्य समाधान केवल विभिन्न फ़ाइलों का उपयोग करना है। प्रत्येक फ़ाइल के साथ-साथ एक अलग फ़ाइल के साथ एक ही फ़ाइल नाम वाली फ़ाइल होती है। उदाहरण के लिए: foobar.txt और foobar.txt.md5 (या .crc)।

1

मैं सीआरसी को फ़ाइल में ही स्टोर नहीं करता। मेरे पास एक फ़ाइल होगी (मैं एक्सएमएल प्रारूप का उपयोग करूंगा) कि आपका प्रोग्राम फाइलनामों और उनके संबंधित सीआरसी मूल्यों की सूची के साथ उपयोग करता है। इसे जटिल बनाने की कोई ज़रूरत नहीं है।

4

सामान्य समाधान जो व्यापक रूप से संचार प्रोटोकॉल में उपयोग किया जाता है, सीआरसी क्षेत्र को 0 पर सेट करना है, सीआरसी की गणना करना है और फिर इसे 0 के बजाय रखें। जांच कोड को रिवर्स प्रक्रिया करना चाहिए - सीआरसी पढ़ें, शून्य क्षेत्र, सीआरसी की गणना करें और तुलना करें।

इसके अलावा, एक फ़ाइल चेकसम के लिए मैं सीआरसी के बजाय एमडी 5 की दृढ़ता से अनुशंसा करता हूं।

संबंधित मुद्दे