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

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

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

ตัวอย่าง
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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();
        }
    }
}
ผลลัพธ์ที่ได้คือ
1
Digest(in hex format):: ab874467a7d1ff5fc71a4ade87dc0e098b458aae
ตัวโปรแกรมจะทำการสร้างรหัสค่าแบบ SHA-1 checksum ลงในไฟล์ "C:\\users\\nopphanan7\\CheckSum.txt". สำหรับการสร้างรหัสแบบ MD5 ให้ทำการเปลี่ยนข้อความใน MessageDigest ดังนี้:
1
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