การสร้างไฟล์ Checksum ใน Java

ต่อไปนี้เป็นตัวอย่างการสร้างรหัส checksum แบบ "SHA-1" ใน Java ครับ.

CheckSum คืออะไร CheckSum คือการตรวจสอบความถูกต้องของข้อมูล โดยฝ่ายที่ส่งข้อมูลจะทำการคำนวณค่า checksum แล้วใส่ค่า checksum ลงไปใน header ของแต่ละ Protocol ข้อมูล เช่น TCP/IP ,UDP,ICMP และเมื่อฝ่ายรับข้อมูล รับข้อมูลมาแล้วจะนำเอาค่า checksum นี้มาตรวจสอบข้อมูลที่รับมาว่าถูกต้องหรือไม่ เพราะการตรวจสอบความถูกต้อง และสมบูรณ์ของไฟล์โปรแกรมที่ดาวน์โหลดจากเว็บไซต์ก่อนการติดตั้งนั้นเป็น สิ่งสำคัญ ตัวอย่างโปรแกรมที่ใช้ในการ CheckSum เช่น md5 CheckSum, winMD5sum, hash เป็นต้น

ตัวอย่าง
package demo.file;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class CheckSumExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        File datafile = new File("C:\\users\\nopphanan7\\CheckSum.txt");

        try {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            FileInputStream fis = new FileInputStream(datafile);

            byte[] dataBytes = new byte[1024];

            int nread = 0;

            while ((nread = fis.read(dataBytes)) != -1) {
                md.update(dataBytes, 0, nread);
            }
            byte[] mdbytes = md.digest();
            // convert the byte to hex format
            StringBuffer sb = new StringBuffer("");
            for (int i = 0; i < mdbytes.length; i++) {
                sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
            }

            System.out.println("Digest(in hex format):: " + sb.toString());
            FileWriter fileWritter = new FileWriter(datafile,true);  
            BufferedWriter bufferWritter = new BufferedWriter(fileWritter);  
            bufferWritter.write(sb.toString());  
            bufferWritter.close();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ผลลัพธ์ที่ได้คือ
Digest(in hex format):: ab874467a7d1ff5fc71a4ade87dc0e098b458aae
ตัวโปรแกรมจะทำการสร้างรหัสค่าแบบ SHA-1 checksum ลงในไฟล์ "C:\\users\\nopphanan7\\CheckSum.txt". สำหรับการสร้างรหัสแบบ MD5 ให้ทำการเปลี่ยนข้อความใน MessageDigest ดังนี้:
MessageDigest md = MessageDigest.getInstance("MD5");

About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment