2013-07-04 11 views
7

मुझे प्रोग्राम डेटा को सहेजने का एक कच्चा तरीका पता है, इसे टेक्स्ट फ़ाइल में रखते हुए। समस्या यह है कि किसी को भी टेक्स्ट फ़ाइल तक पहुंच है और इसे कुशल बना सकते हैं। उदाहरण के लिए, मैं गेम डेटा को सहेजना और लोड करना चाहता हूं जो गेम की प्रगति के रूप में बदलता है। इस तरह के डेटा को स्टोर करने और इसे केवल गेम प्रोग्राम के भीतर सुलभ रखने के लिए कौन सी विधियां हैं, इसलिए यह दूसरों द्वारा छेड़छाड़ नहीं की जाती है?डेटा सहेजना और लोड करना सी ++

+0

दरार सुरक्षा में के रूप में? –

+0

एक गेम में एक स्तर संपादक की तरह। नया स्तर डेटा सहेजा गया है और केवल गेम प्रोग्राम द्वारा ही इसका उपयोग किया जा सकता है। – starhacker

उत्तर

6

आपको अपने डेटा को बाइनरी फ़ाइलों में संग्रहीत करना चाहिए। लेकिन लोग अभी भी इसे बदल सकते हैं (जैसे कि मैं अक्सर डायब्लो 2: डी में अपने चरित्र के कौशल बिंदु या स्टेट पॉइंट को बदलता हूं) इसलिए आपको हैश योग की गणना करने और इसे अपने डेटा में संग्रहीत करने के लिए एल्गोरिदम खोजने पर विचार करना चाहिए।

3

आप डेटा को बाइनरी फ़ाइल में सहेज सकते हैं। सी ++ ऑब्जेक्ट से और बिट्स को बस लिखें और पढ़ें।

+0

मुझे यकीन है कि लोग ओप फ़ाइल से बचाने की कोशिश कर रहा है यह पता लगा सकता है कि बाइनरी फ़ाइल को कैसे परिवर्तित किया जाए; नहीं? – ChiefTwoPencils

+0

अच्छी तरह से मुझे नहीं पता कि डेटा कैसे लिखा जाएगा। यदि वह डेटा लिखना चाहता है वह एक संरचना है जिसमें 2 इन्स और एक 10 वर्ण स्ट्रिंग है, तो मुझे लगता है कि फ़ाइल केवल आकार (int) + sizeof (int) + 10 * sizeof (char) बाइट्स होगी। और इसका एकमात्र तरीका यह समझ जाएगा कि अगर उसकी ऑब्जेक्ट – bathtub

+0

द्वारा डाली गई थी तो मैं जो कह रहा हूं वह उस उत्तर में @DzungAh ने कहा था। बाइनरी फ़ाइल में डेटा सहेजना अपने आप में एक अच्छा समाधान नहीं है। यह अभी भी संपादन योग्य होगा ... – ChiefTwoPencils

8

विचार आपके डेटा को इस तरह से प्रारूपित करना है ताकि यह मनुष्यों द्वारा पठनीय न हो। यह कई तरीकों से उपयोग करके किया जा सकता है।

  • डेटा को बाइनरी के रूप में सहेजें। यह फ़ाइल को मनुष्यों द्वारा पढ़ना मुश्किल बनाता है, इसलिए एक हेक्स संपादक या इसी तरह के प्रोग्राम का उपयोग करने की आवश्यकता है। यह भी देखना मुश्किल बनाता है कि एक मूल्य कहां समाप्त होता है, और दूसरा शुरू होता है (टेक्स्ट फ़ाइल में यह सफेद स्थान द्वारा दिखाया जाता है)। इसका दूसरा फायदा यह है कि आपकी फाइलें बहुत छोटी होंगी।
  • डेटा एन्क्रिप्शन। डेटा को विभिन्न विधियों का उपयोग करके एन्क्रिप्ट किया जा सकता है। यह एक काफी सुरक्षित विकल्प है, हालांकि एन्क्रिप्शन धीमा हो सकता है, इसलिए बहुत बड़ी मात्रा में डेटा के लिए, यह इष्टतम नहीं हो सकता है कि डेटा को कितनी तेजी से सहेजा/लोड किया जाना चाहिए। कहीं भी एन्क्रिप्शन/डिक्रिप्शन कुंजी को संग्रहीत करने का मुद्दा भी है (संभवतः फ़ाइल में ही, या प्रोग्राम में निरंतर एक के रूप में)।
  • Obfuscation। यह एक व्यापक शब्द है जो चीजों को पढ़ने में मुश्किल बनाने के लिए संदर्भित करता है। उदाहरण के लिए, दोनों तारों को पढ़ने योग्य बनाने के प्रयास में दो तारों को अंतःस्थापित किया जा सकता है। Obfuscation अक्सर जंक डेटा आवंटित करना शामिल है, जानकारी जो प्रोग्राम द्वारा उपयोग नहीं किया जाता है, और केवल हैकर्स करने में मदद करता है हैकर्स होगा।
  • वैधता जांच। इस मामले में कि कोई फ़ाइल को संशोधित करता है, और वे नहीं जानते कि वे क्या कर रहे हैं, यह अत्यधिक संभावना है कि कार्यक्रम पर उनके कुछ प्रभावशाली प्रभाव होंगे। इस तरह, वे फ़ाइल को आसानी से देख सकते हैं कि आपका प्रोग्राम कैसा प्रतिक्रिया करता है। इसका विरोध करने का एक तरीका यह जांचना है कि क्या सभी डेटा तार्किक सीमा के भीतर है या नहीं। फ़ाइल को फ़ाइल में कई बार भी संग्रहीत किया जा सकता है, अलग-अलग तरीकों से obfuscated या एन्क्रिप्टेड। यदि डेटा अलग है, तो आप जानते हैं कि फ़ाइल को छेड़छाड़ की गई है।
संबंधित मुद्दे