أفضل طريقة لتخزين البيانات بين البرنامج يعمل في جافا؟

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

سؤال

ما هي أفضل طريقة لتخزين البيانات بين البرنامج يعمل في جافا؟ أعلم بالفعل أنه يمكنك استخدام ملف نصي وتخزين المعلومات الموجودة بهذه الطريقة، لكنني كنت أتساءل عما إذا كانت هناك طريقة أفضل لتخزين المعلومات التي يتم إنشاؤها بواسطة البرنامج بين أشواط البرنامج.

أيضا، هل هناك أي طريقة للقيام بذلك حتى الاحتفاظ بالمعلومات آمنة؟ على وجه التحديد، أريد أن أبقي المستخدم النهائي من القدرة على الوصول إليه.

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

المحلول

كنت أتساءل عما إذا كان هناك أي طريقة أخرى وضع المعلومات التي يتم وضعها من قبل البرنامج بين أشواط البرنامج؟

ببساطة استخدام an. ObjectOutputStream لتسلسلها في ملف و ObjectInputStream للحصول عليه مرة أخرى.

هل هناك أيضا أي طريقة للقيام بذلك للحفاظ على المعلومات الآمنة؟ من المستخدم النهائي يجري الوصول إليها؟

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

نصائح أخرى

أنا لم أستخدمها بنفسي، لكنني أعتقد أن هذا هو ما jdk java.util.prefs.preefences. تم تصميمه في الأصل ل.

يمكنك استخدام الخصائص لتخزين المعلومات. إذا كنت ترغب في جعلها آمنة، واجهتها من خلال نوع من تشفير مجرى.

التشفير على الملفات، أو قاعدة البيانات المحلية مع كلمة المرور.

يمكنك استخدام DB4O. لتخزين البيانات. إنها قاعدة بيانات كائن وتدعم التشفير.

كنت قد تكون مهتمة في Quick'n'dirty استمرار جافا.

اقترح بعض الناس استخدام التسلسل. احذر أن هناك عددا من العيوب إلى التسلسل.

  • مشكلة الإصدار. إذا قمت بتغيير شيء ما في الفئات المسلقة، فلن تتمكن الملفات المتنقلة المكتوبة مع الإصدار القديم من البرنامج بسهولة بعد الآن.
  • أنت لا تعرف تنسيق الملفات الدقيقة. سيكون من الصعب حقا أن تكتب برنامجا مختلفا لاحقا، ربما في لغة برمجة مختلفة، تحتاج إلى قراءة الملف.

التسلسل غير مناسب تماما للتخزين على المدى الطويل.

أود أن أقترح باستخدام قاعدة بيانات صغيرة ومضمنة بدلا من ذلك. (قاعدة بيانات مضمنة هي قاعدة بيانات تعمل في نفس العملية كبرنامجك). لاحظ أن جافا الشمس تشمل جافا ديسيبل, ، وهو نسخة من أباتشي ديربي. هناك ايضا hsqldb., ، وهي قاعدة بيانات Java الصغيرة والصرفة الأخرى التي يمكن استخدامها كقاعدة بيانات مضمنة.

أفضل شيء يجب استخدامه عند بدء تشغيل Java هو استخدام ObjectoutPuttream أو ملف نصي. بمجرد الحصول على المزيد من التجربة، يمكنك استخدام قواعد البيانات.

ماذا عن التسلسل؟

لا يمكن قراءته من قبل المستخدم وهو سهل نسبيا.

كما قال آخرون، هناك عدد لا يحصى من الطرق لاستسلسل البيانات. يمكنك استخدام شيء خفيف الوزن مثل SQLite أو مجرد تسلسل عادي. فقط أدرك أن أي محاولات تقوم بها لتشفير البيانات يمكن هزيمة، خاصة في حالة رمز Java لأنه يمكن عكسه بسهولة.

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

أنا شخصيا أقترح استخدام SQLite واستخدام بعض التشفير البسيط على البيانات التي تضعها في الحقول، لذلك إذا كان شخص ما ذكيا بما يكفي لتكون قادرا على الاتصال بملف DB المحلي، فلا يزال يتعين عليهم عكس خوارزمية Crypto الخاصة بك بطريقة ما بطريقة أخرى. 99.9٪ من المستخدمين العاديين لن يزعجوا هذا المستوى من التحقيق.

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

سوف يؤدي ضغط / إلغاء الضغط بسيط للغاية لجميع المستخدمين تقريبا من الحصول على المحتويات الفعلية للبيانات. سيقوم استخدام GzipinputStream / Gzipoutputtream حول دفق الكتابة الحالي الخاص بك. كلما زادت وضع دفاعك ضد التحديق الذي تحصل عليه أكثر من ذلك فسوف يؤثر على مستخدمي برنامجك.

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