โปรแกรมเข้ารหัส Hash
function แบบ SHA-256
สวัสดีครับ วันนี้บทความนี้จะมาแสดงเทคนิกการเขียนโปรแกรมที่เกี่ยวกับการเข้ารหัสให้เพื่อนๆเข้าใจกัน
โดยในเคสนี้ผมเจอโจทย์ปัญหาว่า “ให้ทำการเตรียม parameter ที่เข้ารหัสแบบ SHA-256 เพื่อทำ load test ระบบโดยใช้ test tool ที่ชื่อว่า Loadrunner” บทความนี้จึงจะแสดงวิธีการเขียนโปรแกรม (Java) เพื่อเข้ารหัส SHA-256 สำหรับใช้ทำ load test
รูป 1 โปรแกรมแสดงการเลือกไฟล์มาเข้ารหัส
รูป 2 การเข้ารหัสแบบ
SHA-256 จากไฟล์ต้นทาง (ซ้าย) มายังไฟล์ที่ถูก
encrypt (ขวา)
1. การเข้ารหัส Hashing แบบ SHA-256
- SHA เป็นการสร้างข้อความสรุปที่สามารถใช้เป็นตัวแทนของข้อความตั้งต้นได้ โดยทั่วไปข้อความสรุปจะมีความยาวอยู่ระหว่าง 128 ถึง 256 บิต และจะไม่ขึ้นกับขนาดความยาวของข้อความตั้งต้น หาก Input เหมือนเดิม Output ที่ได้จะไม่เปลี่ยนไปจากเดิม
- หาก Input เปลี่ยนไปแม้แต่นิดเดียว Output ที่ได้จะต่างกันอย่างสิ้นเชิง คือไม่มีความคล้ายคลึงกันแม้แต่นิดเดียว
- ไม่ว่า Input จะยาวแค่ไหน Output ที่ได้จะมีความยาวเท่าเดิมตลอด เช่น SHA-256 -> 256 bits หรือ 64 digits
- ไม่สามารถใช้ Algorithm เดิมกับ Output เพื่อหา Input ดั้งเดิมได้ กล่าวคือถ้า Hash Input A แล้วก็จะได้ output A แล้วถ้าเกิด Hash output A ก็จะได้ output B (ที่ไม่ใช่ Input A)
2. โปรแกรมการเข้ารหัส Hashing แบบ SHA-256
- · Flowchart ด้านล่างนี้คือโครงสร้างของโปรแกรมการเข้ารหัส
รูป 3 Class
diagram ของโปรแกรมการเข้ารหัส
- · รายละเอียดของ class ของโปรแกรม มีดังนี้
รูป 4 method
ของ Class โปรแกรมการเข้ารหัส
- โค้ดของโปรแกรม MyForm.java
อธิบาย
a) Method MyForm() เป็นคอนสตรักเตอร์ของคลาส หมายความว่า Method นี้จะถูกเรียกใช้โดยอัตโนมัติทุกครั้งที่มีการเรียกคลาส MyForm ซึ่ง Method นี้จะเรียกใช้เมธอด initComponents()
b) Method initComponents() ทำหน้าที่กำหนดออปเจคต่างๆบนหน้าโปรแกรมเช่น Text label, Button
c) Method ActionListener() จะรอรับ event ที่ผู้ใช้ทำกับโปรแกรม เช่นการคลิ้กปุ่มจะมีการมาเรียกใช้เมธอดนี้
- โค้ดของโปรแกรม ReadFileLineByLineUsingBufferedReader.java
อธิบาย
a) Method readFile(String filePath) ทำหน้าที่รับ path ของไฟล์ต้นทางที่จะนำมาเข้ารหัสมาอ่านทีละบรรทัด และค่าที่อ่านได้จะส่งต่อไปยัง เมธอด SHA256Convert2(line) ซึ่งเป็นเมธอดของคลาสแม่เพื่อทำการเข้ารหัส เสร็จแล้วค่าที่เข้ารหัสจะถูกส่งกลับมาเพื่อเขียนลง output file
- โค้ดของโปรแกรม SHA256Convert.java
อธิบาย
• Method SHA256Convert() เป็นคอนสตรักเตอร์ของคลาส SHA256Convert
• Method getSHA256Hash(String data) เป็นเมธอดที่ใช้ในการเข้ารหัสข้อความโดยการทำ Hashing ด้วยวิธี SHA-256
3. การรันโปรแกรมการเข้ารหัส Hashing แบบ SHA-256
• เริ่มต้นโดยการคลิกเรียกโปรแกรมเข้ารหัสที่ได้เตรียมไว้
รูป 5 หน้าแรกของโปรแกรมการเข้ารหัส
• จากนั้นกดปุ่ม “Open File Chooser” เพื่อเลือกไฟล์มาทำการเข้ารหัส
รูป 6 ปุ่มทำการเลือกไฟล์มาทำการเข้ารหัส
• เมื่อเลือกไฟล์แล้ว ชื่อไฟล์และ path จะปรากฎที่หน้าโปรแกรม (ในรูปวงสีเหลือง)
รูป 7 ชื่อไฟล์ที่จะทำการเข้ารหัสแบบ
hashing
• จากนั้นให้กดปุ่ม Convert SHA-256 เพื่อทำการเข้ารหัสไฟล์ที่เลือก โดยโปรแกรมจะเข้ารหัสทีละบรรทัด
รูป 8 กดปุ่มเพื่อทำการเข้ารหัส
• ผลลัพท์การเข้ารหัสจะแสดงดังภาพซึ่งจะมีการเข้ารหัสทุกบรรทัด โดยจะสร้างไฟล์ใหม่ขึ้นมาชื่อ sha256_out.txt วางให้ที่ path เดียวกับ file ต้นฉบับ
รูป 9 การเข้ารหัสแบบ
SHA-256 จากไฟล์ต้นทาง (ซ้าย) มายังไฟล์ที่ถูก
encrypt (ขวา)












No comments:
Post a Comment