จะรับ MD5 checksum สำหรับไฟล์ที่ระบุใน Java ได้อย่างไร จะใช้ยูทิลิตี้ DigestUtils.md5Hex ของ Apache Common ได้อย่างไร

เผยแพร่แล้ว: 2021-08-28
จะรับ MD5 checksum สำหรับไฟล์ที่ระบุใน Java ได้อย่างไร ใช้ DigestUtils.md5Hex . ของ Commons-codec

การทำให้แอปพลิเคชันองค์กรของคุณมีความปลอดภัยคือความท้าทายที่ยิ่งใหญ่ที่สุดขององค์กร

พิจารณาสถานการณ์จำลองการผลิตจริงนี้:

  1. คุณมีแอปพลิเคชันที่ reads the value จากไฟล์
  2. ขึ้นอยู่กับค่าของไฟล์ มัน performs some operations เช่น add/delete/execute
  3. คุณได้ปรับใช้แอปพลิเคชันนี้ในสภาพแวดล้อมการผลิต
  4. จะเกิดอะไรขึ้นหากมี unauthorized person changes the value ของไฟล์นั้นโดยที่คุณไม่รู้ตัว
  5. แอปพลิเคชันของคุณ simply gets new value จากไฟล์และเรียกใช้ตรรกะซึ่งอาจทำให้เกิด unexpected outcome
  6. หากคุณเปิดใช้งาน MD5 checksum สำหรับไฟล์นั้น – คุณ could have created an exception พร้อมข้อความแสดงข้อผิดพลาดที่ชัดเจน และ you could have prevented disaster หรือผลลัพธ์ที่ไม่คาดคิดได้

เช็คซัม MD5 คืออะไร?

การตรวจสอบ MD5 สำหรับไฟล์มีค่า 128-bit value ซึ่งคล้ายกับลายนิ้วมือของไฟล์ มีประโยชน์ทั้งในการเปรียบเทียบไฟล์และการควบคุมความสมบูรณ์ของไฟล์

แทบจะเป็นไปไม่ได้เลยที่จะได้ค่าเดียวกันสำหรับไฟล์ที่ต่างกัน ในบทช่วยสอนนี้ เราจะสร้างโปรแกรม Java อย่างง่าย ซึ่งสร้างและคืนค่า MD5 สำหรับไฟล์ที่กำหนด ในกรณีของเราคือไฟล์ index.php

มาเริ่มกันเลย:

ขั้นตอนที่ 1

สร้างคลาสสาธารณะ CrunchifyGetMD5ForFile.java

ขั้นตอนที่ 2

นำเข้าการขึ้นต่อกันของ maven สองรายการไปยังไฟล์ pom.xml ของโปรเจ็กต์ของคุณ บทช่วยสอนการแปลงโปรเจ็กต์เป็นโปรเจ็กต์ maven

เรากำลังใช้ไลบรารี่ commons-codec และ commons-io

ขั้นตอนที่ 3

สร้างเช็คซัม MD5 โดยใช้ยูทิลิตี้ DigestUtils.md5Hex และพิมพ์ผลลัพธ์บนคอนโซล

DigestUtils.md5Hex => encodeHex Implementation

นี่คือโปรแกรมเต็มรูปแบบ

สร้างคลาส crunchifyGetMd5ForFile.java

เพียงเรียกใช้โปรแกรมด้านบนเป็น Java Application แล้วคุณจะเห็นผลลัพธ์ที่คล้ายคลึงกันนี้

ผลลัพธ์คอนโซล IntelliJ IDEA:

คุณจะใช้เช็คซัม MD5 นี้ ณ รันไทม์เพื่อตรวจสอบความสมบูรณ์ของไฟล์ได้อย่างไร

คุณสามารถเปรียบเทียบเช็คซัม MD5 นี้ที่รันไทม์กับค่าที่เก็บไว้ในฐานข้อมูล y0ur เช่น MySQL, Oracle เป็นต้น

มีหลายวิธีที่คุณสามารถบรรลุสิ่งเดียวกันได้ แต่เราจะพูดถึงเรื่องนี้ในบทช่วยสอนในอนาคต