كيفية الحصول على مجموع اختباري MD5 لأي ملف معين في Java؟ كيفية استخدام DigestUtils.md5Hex في Apache Common؟

نشرت: 2021-08-28
كيفية الحصول على مجموع اختباري MD5 لأي ملف معين في Java؟ استخدم DigestUtils.md5Hex في برنامج الترميز المشترك

يعد تشديد أمان تطبيق مؤسستك أكبر تحد تواجهه أي مؤسسة.

ضع في اعتبارك سيناريو الإنتاج الفعلي هذا:

  1. لديك تطبيق reads the value من ملف
  2. بناءً على قيمة الملف ، فإنه performs some operations مثل الإضافة / الحذف / التنفيذ
  3. لقد قمت بنشر هذا التطبيق في بيئة الإنتاج
  4. ماذا لو قام unauthorized person changes the value هذا الملف دون علمك؟
  5. يحصل التطبيق الخاص بك simply gets new value من ملف ويقوم بتشغيل المنطق الذي قد يتسبب في unexpected outcome
  6. إذا كان قد تم تمكين المجموع الاختباري MD5 لهذا الملف - فربما تكون قد قمت could have created an exception برسالة خطأ واضحة وكان you could have prevented disaster أو نتيجة غير متوقعة

ما هو المجموع الاختباري MD5؟

المجموع الاختباري MD5 لملف هو 128-bit value ، مثل بصمة الملف. يمكن أن يكون مفيدًا لمقارنة الملفات والتحكم في سلامتها.

يكاد يكون من المستحيل الحصول على نفس القيمة لملف مختلف. في هذا البرنامج التعليمي ، سننشئ برنامج Java بسيطًا يقوم بإنشاء وإرجاع قيم MD5 لملف معين. في حالتنا هو ملف index.php .

هيا بنا نبدأ:

الخطوة 1

قم بإنشاء فئة عامة CrunchifyGetMD5ForFile.java

الخطوة 2

استيراد أقل من اثنين من التبعيات المخضرمين إلى ملف pom.xml الخاص بمشروعك. البرنامج التعليمي لتحويل المشروع إلى مشروع مخضرم.

نحن نستخدم مكتبات commons-codec و commons-io .

الخطوه 3

قم بإنشاء مجموع اختباري MD5 باستخدام الأداة المساعدة DigestUtils.md5Hex وطباعة النتيجة على وحدة التحكم.

DigestUtils.md5Hex => تنفيذ encodeHex

هنا برنامج كامل

قم بإنشاء crunchifyGetMd5ForFile.java

ما عليك سوى تشغيل البرنامج أعلاه كتطبيق Java وسترى نتيجة مشابهة لهذا.

نتيجة وحدة التحكم IntelliJ IDEA:

كيف ستستخدم المجموع الاختباري MD5 هذا في وقت التشغيل للتحقق من سلامة الملف؟

يمكنك مقارنة هذا المجموع الاختباري MD5 في وقت التشغيل مع القيمة المخزنة في قاعدة بيانات y0ur ، مثل MySQL و Oracle وما إلى ذلك.

هناك عدد من الطرق الأخرى التي يمكنك من خلالها تحقيق نفس الشيء ولكننا سنناقش هذا في البرامج التعليمية المستقبلية.