លំហសិក្សាកម្ពុជា លំហសិក្សាកម្ពុជា V1.0
ចូល ចុះឈ្មោះ

មេរៀនទី ៤៖ ការប្រើ SHA-256 Hashing និងការពិនិត្យភាពត្រឹមត្រូវនៃទិន្នន័យ

មូលសង្ខេប / Abstract

មេរៀនទី ៤ នេះណែនាំនិស្សិតអំពីគោលគំនិតសំខាន់មួយរបស់ Blockchain គឺ Hashing។ បន្ទាប់ពីមេរៀនទី៣ ដែលនិស្សិតបានរៀនពី Console Menu និង CSV File Handling មេរៀននេះបន្តទៅការប្រើ Hash ដើម្បីពិនិត្យភាពត្រឹមត្រូវនៃទិន្នន័យ។ Hash អាចយល់បានថាជា “ស្នាមម្រាមដៃឌីជីថល” របស់ទិន្នន័យ។ ទិន្នន័យដូចគ្នានឹងបង្កើត Hash ដូចគ្នា ប៉ុន្តែបើកែតែអក្សរមួយ Hash នឹងផ្លាស់ប្តូរខ្លាំង។ ក្នុងមេរៀននេះ និស្សិតនឹងប្រើ Python hashlib ដើម្បីបង្កើត SHA-256 hash សម្រាប់អត្ថបទធម្មតា Certificate Record និង CSV Data។ Python Documentation បង្ហាញថា hashlib ផ្ដល់ interface សម្រាប់ secure hash និង message digest algorithms រួមទាំង SHA-256 [1]។ NIST Secure Hash Standard កំណត់លក្ខណៈស្តង់ដាររបស់ SHA-256 ដែលមាន message digest size 256 bits [2]។ មេរៀននេះជាមូលដ្ឋានសំខាន់មុនទៅកាន់ Block Hash, Previous Hash, Blockchain Validation និង Tamper Detection។

ពាក្យគន្លឹះ

១. ព័ត៌មានទូទៅអំពីមេរៀន

ចំណុចព័ត៌មាន
មុខវិជ្ជាBlockchain Technology Using Python Console and CSV
មេរៀនមេរៀនទី ៤
ចំណងជើងHashing and Data Integrity
ប្រធានបទសំខាន់SHA-256 Hashing, Certificate Hash, Data Integrity, Hash Comparison
កម្រិតនិស្សិតBeginner to Intermediate
ភាសាសរសេរកម្មវិធីPython
ប្រភេទកម្មវិធីConsole Application
ឧបករណ៍ប្រើប្រាស់Python, VS Code, Terminal / Command Prompt, CSV file
Python Moduleshashlib, json, csv
លទ្ធផលរំពឹងទុកនិស្សិតអាចបង្កើត Hash សម្រាប់ Certificate Record និងពិនិត្យការផ្លាស់ប្តូរទិន្នន័យ
ទិសដៅ ProjectConsole-Based Blockchain Student Certificate Verification System

២. គោលបំណងសិក្សា

បន្ទាប់ពីបញ្ចប់មេរៀននេះ និស្សិតគួរអាច៖

  1. ពន្យល់បានថា Hash គឺជាអ្វី។
  2. ពន្យល់បានថា SHA-256 មានតួនាទីអ្វីក្នុង Blockchain។
  3. ប្រើ Python hashlib ដើម្បីបង្កើត SHA-256 hash។
  4. ប្រើ json.dumps() ដើម្បីបម្លែង Dictionary ទៅជា string មុនធ្វើ Hash។
  5. បង្កើត Certificate Hash សម្រាប់ Certificate Record មួយ។
  6. ប្រៀបធៀប Hash មុន និងក្រោយពេលទិន្នន័យត្រូវបានកែប្រែ។
  7. ពន្យល់បានថា Data Integrity មានន័យដូចម្តេច។
  8. ពន្យល់បានថា Hash ជួយ Tamper Detection បានយ៉ាងដូចម្តេច។
  9. រៀបចំ Certificate Data ពី CSV សម្រាប់ Hashing។
  10. បន្តយក Hashing Concept ទៅប្រើក្នុង Block Creation នៅមេរៀនបន្ទាប់។

៣. ទំនាក់ទំនងមេរៀនទី ៤ ជាមួយ Final Project

ក្នុងមេរៀនទី ៣ និស្សិតបានបង្កើតកម្មវិធី Certificate CSV Manager ដែលអាច Add, Show និង Search Certificate Records។ ប៉ុន្តែការរក្សាទុកទិន្នន័យក្នុង CSV មិនទាន់គ្រប់គ្រាន់សម្រាប់ Blockchain ទេ ព្រោះ CSV អាចត្រូវបានបើក និងកែប្រែដោយដៃបាន។ ដូច្នេះយើងត្រូវការវិធីសាស្ត្រមួយសម្រាប់បង្កើតភស្តុតាងថា ទិន្នន័យមិនត្រូវបានកែប្រែ។ វិធីសាស្ត្រនោះគឺ Hashing។

Flow របស់មេរៀនទី៤គឺ៖

Certificate Record
↓
Convert to Consistent Text / JSON
↓
Generate SHA-256 Hash
↓
Save Hash as Digital Fingerprint
↓
Change Data
↓
Generate New Hash
↓
Compare Old Hash and New Hash

Figure 1. Certificate Record to SHA-256 Hash

រូបភាពនេះគួរបង្ហាញថា Certificate Record មួយត្រូវបានបម្លែងទៅជា text ឬ JSON string ហើយបន្ទាប់មកត្រូវបានបញ្ចូលទៅក្នុង SHA-256 Hash Function ដើម្បីបង្កើត Hash Value។ Hash Value នេះអាចប្រើជាស្នាមម្រាមដៃឌីជីថលរបស់ Certificate Record។


៤. តើ Hash គឺជាអ្វី?

Hash គឺជាលទ្ធផលដែលបានពី Hash Function។ Hash Function ទទួលទិន្នន័យមួយចំនួន ហើយបម្លែងវាទៅជា output ដែលមានប្រវែងថេរ។ ក្នុង SHA-256 output មានទំហំ 256 bits ឬជាទូទៅបង្ហាញជា hexadecimal string ប្រវែង 64 តួអក្សរ។ NIST FIPS 180-4 បង្ហាញថា SHA-256 មាន message digest size 256 bits [2]។

ឧទាហរណ៍៖

Input:  Hello
Hash:   185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

បើកែពី Hello ទៅជា hello Hash នឹងខុសគ្នាខ្លាំង។ នេះបង្ហាញថា Hash មានលក្ខណៈ sensitive ចំពោះការផ្លាស់ប្តូរទិន្នន័យ។

លក្ខណៈសំខាន់នៃ Hash

លក្ខណៈការពន្យល់
Fixed lengthទោះ input វែង ឬខ្លី output មានប្រវែងថេរ
Deterministicទិន្នន័យដូចគ្នា បង្កើត Hash ដូចគ្នា
Sensitive to changeកែតែអក្សរមួយ Hash ក៏ផ្លាស់ប្តូរ
One-wayមិនអាចយក Hash ត្រឡប់ទៅរកទិន្នន័យដើមបានងាយ
Useful for integrityអាចប្រើពិនិត្យថាទិន្នន័យត្រូវបានកែ ឬអត់

Figure 2. Hash as a Digital Fingerprint

រូបភាពនេះគួរបង្ហាញថា Hash មានតួនាទីដូចស្នាមម្រាមដៃឌីជីថលរបស់ទិន្នន័យ។ ទិន្នន័យដូចគ្នាបង្កើត Hash ដូចគ្នា ប៉ុន្តែទិន្នន័យដែលត្រូវបានកែបន្តិចនឹងបង្កើត Hash ខុសគ្នា។ គំនិតនេះជាមូលដ្ឋានសម្រាប់ Data Integrity និង Tamper Detection។


៥. តើ SHA-256 គឺជាអ្វី?

SHA-256 មានន័យថា Secure Hash Algorithm 256-bit។ វាជាផ្នែកមួយនៃគ្រួសារ SHA-2។ SHA-256 ត្រូវបានប្រើក្នុងប្រព័ន្ធសុវត្ថិភាពជាច្រើន រួមទាំង Blockchain ដើម្បីបង្កើត Hash សម្រាប់ទិន្នន័យ។ NIST Secure Hash Standard គឺជាស្តង់ដារដែលកំណត់ SHA algorithms សម្រាប់ការបង្កើត message digest [2]។

ក្នុង Python យើងអាចប្រើ hashlib.sha256() ដើម្បីបង្កើត SHA-256 hash។ Python hashlib documentation បង្ហាញឧទាហរណ៍ការបង្កើត hash object ដោយប្រើ hashlib.sha256() [1]។


៦. Python hashlib

៦.១ ការបង្កើត Hash សម្រាប់អត្ថបទធម្មតា

import hashlib

text = "Hello Blockchain"
hash_value = hashlib.sha256(text.encode("utf-8")).hexdigest()

print("Text:", text)
print("SHA-256 Hash:", hash_value)

ការពន្យល់កូដ

  • import hashlib នាំចូល module សម្រាប់ hashing។
  • text.encode("utf-8") បម្លែង string ទៅ bytes ព្រោះ hash function ត្រូវការទិន្នន័យជា bytes។
  • hashlib.sha256(...) បង្កើត SHA-256 hash object។
  • .hexdigest() បង្ហាញ hash ជា hexadecimal string។

លទ្ធផលរំពឹងទុក

Text: Hello Blockchain
SHA-256 Hash: 5f1e...

Hash ដែលបានបង្ហាញអាចខុសទៅតាម input ពិតប្រាកដ។ ចំណុចសំខាន់គឺ input ដូចគ្នា នឹងបង្កើត hash ដូចគ្នា។


៧. Practical Lab 1: Simple Hash Generator

គោលបំណង

បង្កើតកម្មវិធី Console មួយដែលទទួលអត្ថបទពីអ្នកប្រើប្រាស់ ហើយបង្ហាញ SHA-256 hash។

Source Code

import hashlib

def generate_hash(text):
    return hashlib.sha256(text.encode("utf-8")).hexdigest()

user_input = input("Enter text to hash: ")
hash_value = generate_hash(user_input)

print("Original Text:", user_input)
print("SHA-256 Hash:", hash_value)

ការពន្យល់

Function generate_hash() ទទួល text មួយ ហើយបង្កើត SHA-256 hash។ ការប្រើ Function ជួយឱ្យយើងអាចប្រើ hashing logic ម្តងហើយម្តងទៀតនៅក្នុង Project។

Figure 3. Simple Hash Generator in Python Console

រូបភាពនេះគួរបង្ហាញ Console ដែលអ្នកប្រើប្រាស់បញ្ចូលអត្ថបទ ហើយ Python Program បង្ហាញ SHA-256 hash។ វាជួយឱ្យនិស្សិតយល់ថា Hashing អាចចាប់ផ្ដើមពីកម្មវិធី Console សាមញ្ញមួយ។


៨. Hashing Certificate Record

ក្នុង Project របស់យើង យើងមិនត្រឹមតែ Hash អត្ថបទធម្មតាទេ។ យើងត្រូវ Hash Certificate Record ដែលជា Dictionary។ ប៉ុន្តែ Hash Function មិនទទួល Dictionary ដោយផ្ទាល់ទេ។ ដូច្នេះយើងត្រូវបម្លែង Dictionary ទៅជា string មុន។

យើងប្រើ json.dumps() ដើម្បីបម្លែង Dictionary ទៅជា JSON string។ Python JSON documentation បញ្ជាក់ថា json.dumps() អាច serialize object ទៅជា JSON formatted string ហើយ parameter sort_keys=True នឹង sort dictionary keys ដើម្បីឱ្យ output មានលំដាប់ថេរ [3]។

Source Code

import hashlib
import json

def generate_hash(data):
    data_string = json.dumps(data, sort_keys=True)
    return hashlib.sha256(data_string.encode("utf-8")).hexdigest()

certificate = {
    "certificate_id": "CERT-FDE-001",
    "student_name": "Sok Dara",
    "program": "Digital Economy",
    "certificate_title": "Blockchain Technology Completion",
    "issue_date": "2026-08-25",
    "status": "Valid"
}

certificate_hash = generate_hash(certificate)

print("Certificate Data:", certificate)
print("Certificate Hash:", certificate_hash)

ហេតុអ្វីប្រើ sort_keys=True?

ប្រសិនបើ Dictionary មាន key order ខុសគ្នា JSON string អាចខុសគ្នា ហើយ Hash អាចខុសគ្នា។ ដូច្នេះ sort_keys=True ជួយធ្វើឱ្យ key order មានលំដាប់ថេរ។


៩. Practical Lab 2: Certificate Hash Generator

គោលបំណង

បង្កើត Certificate Hash សម្រាប់ Certificate Record មួយ។

Source Code

import hashlib
import json

def generate_hash(data):
    data_string = json.dumps(data, sort_keys=True)
    return hashlib.sha256(data_string.encode("utf-8")).hexdigest()

def create_certificate():
    certificate = {
        "certificate_id": input("Certificate ID: "),
        "student_name": input("Student Name: "),
        "program": input("Program: "),
        "certificate_title": input("Certificate Title: "),
        "issue_date": input("Issue Date: "),
        "status": input("Status Valid/Invalid/Revoked: ")
    }

    return certificate

certificate = create_certificate()
certificate_hash = generate_hash(certificate)

print("\n=== Certificate Record ===")
print(certificate)
print("\nCertificate Hash:")
print(certificate_hash)

ការពន្យល់

  • create_certificate() ទទួល Certificate Data ពីអ្នកប្រើប្រាស់។
  • generate_hash() បង្កើត Hash សម្រាប់ Certificate Dictionary។
  • លទ្ធផល Hash អាចត្រូវបានរក្សាទុកក្នុង CSV នៅមេរៀនបន្ទាប់ ឬប្រើសម្រាប់ Block Hash នៅមេរៀនបន្ទាប់ៗ។

Figure 4. Certificate Hash Generator

រូបភាពនេះគួរបង្ហាញពី Certificate Data ដែលត្រូវបានបញ្ចូលទៅក្នុង Hash Function ហើយបង្កើត Certificate Hash។ វាជួយឱ្យនិស្សិតយល់ថា Certificate Hash គឺជាភស្តុតាងបច្ចេកទេសមួយសម្រាប់ពិនិត្យថា Certificate Record ត្រូវបានកែប្រែឬអត់។


១០. Data Integrity គឺជាអ្វី?

Data Integrity មានន័យថា ទិន្នន័យនៅតែត្រឹមត្រូវ ពេញលេញ និងមិនត្រូវបានកែប្រែដោយគ្មានការអនុញ្ញាត។ ក្នុង Certificate Verification System Data Integrity សំខាន់ណាស់ ព្រោះ Certificate Record ត្រូវតែមានភាពត្រឹមត្រូវ។

ឧទាហរណ៍៖

Original Student Name: Sok Dara
Changed Student Name: Sok Daraa

ការបន្ថែមអក្សរ a តែមួយអាចបង្កើត Hash ខុសគ្នាទាំងស្រុង។ នេះជាមូលដ្ឋានសម្រាប់ Tamper Detection។


១១. Practical Lab 3: Compare Hash Before and After Data Change

គោលបំណង

បង្ហាញថាការផ្លាស់ប្តូរទិន្នន័យតូចមួយអាចធ្វើឱ្យ Hash ផ្លាស់ប្តូរខ្លាំង។

Source Code

import hashlib
import json

def generate_hash(data):
    data_string = json.dumps(data, sort_keys=True)
    return hashlib.sha256(data_string.encode("utf-8")).hexdigest()

original_certificate = {
    "certificate_id": "CERT-FDE-001",
    "student_name": "Sok Dara",
    "program": "Digital Economy",
    "certificate_title": "Blockchain Technology Completion",
    "issue_date": "2026-08-25",
    "status": "Valid"
}

changed_certificate = {
    "certificate_id": "CERT-FDE-001",
    "student_name": "Sok Daraa",
    "program": "Digital Economy",
    "certificate_title": "Blockchain Technology Completion",
    "issue_date": "2026-08-25",
    "status": "Valid"
}

original_hash = generate_hash(original_certificate)
changed_hash = generate_hash(changed_certificate)

print("Original Hash:", original_hash)
print("Changed Hash :", changed_hash)

if original_hash == changed_hash:
    print("Data is the same.")
else:
    print("Data has been changed.")

ការពន្យល់

ក្នុងឧទាហរណ៍នេះ យើងបានកែ student_name ពី Sok Dara ទៅ Sok Daraa។ ទោះបីការកែតូចក៏ដោយ Hash នឹងខុសគ្នា។ នេះបង្ហាញថា Hashing អាចជួយរកឃើញការកែប្រែទិន្នន័យ។

Figure 5. Hash Changes When Data Changes

រូបភាពនេះគួរបង្ហាញ Record ដើម និង Record ដែលត្រូវបានកែបន្តិច បន្ទាប់មកបង្ហាញថា Hash ទាំងពីរខុសគ្នា។ វាជួយឱ្យនិស្សិតយល់ថា Hashing ជាឧបករណ៍សំខាន់សម្រាប់ Data Integrity។


១២. Hashing Data from CSV

នៅមេរៀនទី៣ យើងបានបង្កើត certificates.csv។ នៅមេរៀនទី៤នេះ យើងអាចអាន Certificate Record ពី CSV ហើយបង្កើត Hash សម្រាប់ Record នីមួយៗ។

Example CSV

certificate_id,student_name,program,certificate_title,issue_date,status
CERT-FDE-001,Sok Dara,Digital Economy,Blockchain Technology Completion,2026-08-25,Valid

Source Code

import csv
import hashlib
import json

CSV_FILE = "certificates.csv"

def generate_hash(data):
    data_string = json.dumps(data, sort_keys=True)
    return hashlib.sha256(data_string.encode("utf-8")).hexdigest()

def hash_certificates_from_csv():
    with open(CSV_FILE, "r", encoding="utf-8") as file:
        reader = csv.DictReader(file)

        for row in reader:
            certificate_hash = generate_hash(row)
            print("-----------------------------")
            print("Certificate ID:", row["certificate_id"])
            print("Student Name:", row["student_name"])
            print("Certificate Hash:", certificate_hash)

hash_certificates_from_csv()

ការពន្យល់

  • csv.DictReader(file) អាន CSV Row ជា Dictionary។
  • generate_hash(row) បង្កើត Hash សម្រាប់ Row នីមួយៗ។
  • Hash នេះអាចប្រើជាមូលដ្ឋានសម្រាប់ Certificate Verification។

Figure 6. Hashing Certificate Records from CSV

រូបភាពនេះគួរបង្ហាញពី CSV File ដែលមាន Certificate Records ហើយ Python Program អាន Record នីមួយៗ ដើម្បីបង្កើត Hash។ វាជួយបង្ហាញថា CSV Storage និង Hashing អាចភ្ជាប់គ្នាបាន ដើម្បីបង្កើតមូលដ្ឋានសម្រាប់ Blockchain Project។


១៣. Tamper Detection Concept

Tamper Detection មានន័យថា ប្រព័ន្ធអាចរកឃើញថា ទិន្នន័យត្រូវបានកែប្រែ។ Hashing មិនអាចការពារមិនឱ្យមនុស្សបើក CSV និងកែទិន្នន័យបានទេ ប៉ុន្តែវាអាចជួយឱ្យយើងដឹងថា ទិន្នន័យត្រូវបានកែប្រែ។

ឧទាហរណ៍៖

  1. បង្កើត Hash សម្រាប់ Certificate Record ដើម។
  2. រក្សាទុក Hash នោះ។
  3. មនុស្សម្នាក់កែ Student Name ក្នុង CSV។
  4. ប្រព័ន្ធបង្កើត Hash ថ្មី។
  5. ប្រៀបធៀប Hash ដើម និង Hash ថ្មី។
  6. បើ Hash ខុសគ្នា មានន័យថា Data has been changed.

Figure 7. Tamper Detection Using Hash Comparison

រូបភាពនេះគួរបង្ហាញដំណើរការ Tamper Detection ដោយប្រៀបធៀប Stored Hash និង Recalculated Hash។ ប្រសិនបើ Hash ទាំងពីរដូចគ្នា Data គឺ Valid។ ប្រសិនបើ Hash ខុសគ្នា Data ត្រូវបានកែប្រែ។


១៤. Practical Lab 4: Simple Tamper Detection

គោលបំណង

បង្កើតកម្មវិធីសាមញ្ញសម្រាប់ប្រៀបធៀប Hash ដើម និង Hash ថ្មី។

Source Code

import hashlib
import json

def generate_hash(data):
    data_string = json.dumps(data, sort_keys=True)
    return hashlib.sha256(data_string.encode("utf-8")).hexdigest()

certificate = {
    "certificate_id": "CERT-FDE-001",
    "student_name": "Sok Dara",
    "program": "Digital Economy",
    "certificate_title": "Blockchain Technology Completion",
    "issue_date": "2026-08-25",
    "status": "Valid"
}

stored_hash = generate_hash(certificate)

print("Stored Hash:", stored_hash)

certificate["status"] = "Revoked"

new_hash = generate_hash(certificate)

print("New Hash:", new_hash)

if stored_hash == new_hash:
    print("Certificate data is valid.")
else:
    print("Warning: Certificate data has been changed.")

ការពន្យល់

ក្នុងកូដនេះ យើងបានបង្កើត Hash ដើមសម្រាប់ Certificate។ បន្ទាប់មកយើងកែ status ពី Valid ទៅ Revoked។ នៅពេលបង្កើត Hash ថ្មី វានឹងខុសពី Hash ដើម។ កម្មវិធីបង្ហាញ warning ថា Certificate Data ត្រូវបានកែប្រែ។


១៥. គន្លឹះសំខាន់ៗសម្រាប់ការប្រើ Hash

គន្លឹះការពន្យល់
ប្រើ input ដូចគ្នាInput ដូចគ្នា ទើប Hash ដូចគ្នា
ប្រើ sort_keys=Trueធ្វើឱ្យ Dictionary key order ស្ថិតស្ថេរ
កុំបញ្ចូល space មិនចាំបាច់Space បន្ថែមអាចធ្វើឱ្យ Hash ខុស
ប្រើ UTF-8 encodingជួយបម្លែង text ទៅ bytes ឱ្យត្រឹមត្រូវ
រក្សាទុក Hash ដើមដើម្បីប្រៀបធៀបនៅពេលក្រោយ
កុំគិតថា Hash = EncryptionHash មិនមែន Encryption ទេ

១៦. Hash មិនមែន Encryption ទេ

និស្សិតខ្លះអាចច្រឡំថា Hash គឺ Encryption។ តាមពិតវាខុសគ្នា។

HashingEncryption
One-wayTwo-way
មិនអាចត្រឡប់ទៅទិន្នន័យដើមបានងាយអាច decrypt ត្រឡប់ទៅទិន្នន័យដើមបាន
ប្រើសម្រាប់ integrityប្រើសម្រាប់ confidentiality
ឧទាហរណ៍ SHA-256ឧទាហរណ៍ AES

ក្នុង Project នេះ យើងប្រើ Hashing ដើម្បីពិនិត្យថា Certificate Data ត្រូវបានកែប្រែឬអត់ មិនមែនដើម្បីលាក់ទិន្នន័យទេ។


១៧. ការពិភាក្សាក្នុងថ្នាក់

គ្រូអាចប្រើសំណួរខាងក្រោម៖

  1. ហេតុអ្វី Hash ត្រូវបានហៅថា Digital Fingerprint?
  2. តើ Hash អាចជួយ Data Integrity បានយ៉ាងដូចម្តេច?
  3. តើអ្វីកើតឡើង បើ Student Name ត្រូវបានកែ?
  4. ហេតុអ្វីយើងប្រើ json.dumps() មុនធ្វើ Hash?
  5. ហេតុអ្វី sort_keys=True មានសារៈសំខាន់?
  6. តើ Hashing ខុសពី Encryption ដូចម្តេច?
  7. តើ Hashing ជួយដល់ Blockchain Project យ៉ាងដូចម្តេច?

១៨. Reflection Exercise

សរសេរចម្លើយខ្លី ៥–៧ បន្ទាត់៖

តើ Hashing អាចជួយរក្សា Data Integrity ក្នុងប្រព័ន្ធ Certificate Verification បានយ៉ាងដូចម្តេច?

ចម្លើយគួររួមបញ្ចូលគំនិត៖

  • Hash ជា digital fingerprint
  • Certificate Data ត្រូវបានបម្លែងទៅ Hash
  • កែទិន្នន័យតូចមួយ Hash ក៏ផ្លាស់ប្តូរ
  • Stored Hash និង Recalculated Hash អាចប្រៀបធៀបបាន
  • ប្រព័ន្ធអាច detect tampering

១៩. លំហាត់អនុវត្ត

លំហាត់ទី១៖ Simple Text Hash

សរសេរកម្មវិធី Python ដែលទទួល text ពីអ្នកប្រើប្រាស់ ហើយបង្ហាញ SHA-256 hash។


លំហាត់ទី២៖ Certificate Hash

បង្កើត Certificate Dictionary ដែលមាន Fields៖

certificate_id
student_name
program
certificate_title
issue_date
status

បន្ទាប់មក Generate SHA-256 hash សម្រាប់ Certificate Dictionary នោះ។


លំហាត់ទី៣៖ Compare Two Certificate Hashes

បង្កើត Certificate Record ដើម និង Certificate Record ដែលបានកែ Student Name បន្តិច។ Generate Hash ទាំងពីរ ហើយប្រៀបធៀបថា Hash ដូចគ្នាឬខុសគ្នា។


លំហាត់ទី៤៖ Hash Records from CSV

ប្រើ certificates.csv ពីមេរៀនទី៣។ សរសេរកម្មវិធីអាន CSV ហើយ Generate Hash សម្រាប់ Record នីមួយៗ។


លំហាត់ទី៥៖ Explain Hash vs Encryption

សរសេរតារាងខ្លីមួយប្រៀបធៀប Hashing និង Encryption។


លំហាត់ទី៦៖ Simple Tamper Detection

សរសេរកម្មវិធីដែល៖

  1. បង្កើត Certificate Dictionary មួយ។
  2. Generate stored hash។
  3. កែ status ពី Valid ទៅ Revoked។
  4. Generate new hash។
  5. ប្រៀបធៀប Hash ទាំងពីរ។
  6. បង្ហាញថា Data valid ឬ changed។

២០. កិច្ចការផ្ទះ

បង្កើតកម្មវិធី Python Console មួយឈ្មោះ៖

certificate_hash_checker.py

កម្មវិធីត្រូវមាន៖

  1. Function generate_hash(data)
  2. Function create_certificate()
  3. Function compare_hashes(old_hash, new_hash)
  4. អាន Certificate Record ពីអ្នកប្រើប្រាស់។
  5. បង្កើត Certificate Hash។
  6. បង្ហាញ Certificate Data និង Hash។
  7. អនុញ្ញាតឱ្យអ្នកប្រើប្រាស់កែ Status។
  8. Generate Hash ថ្មី។
  9. ប្រៀបធៀប Hash ដើម និង Hash ថ្មី។
  10. បង្ហាញសារ៖
  • Certificate data is valid.
  • Warning: Certificate data has been changed.

២១. លទ្ធផលដែលនិស្សិតគួរទទួលបាន

បន្ទាប់ពីបញ្ចប់មេរៀនទី៤ និស្សិតគួរមាន៖

  1. ការយល់ដឹងពី Hash និង SHA-256។
  2. ការប្រើ hashlib ដើម្បីបង្កើត Hash។
  3. ការប្រើ json.dumps() សម្រាប់ Hashing Dictionary។
  4. ការយល់ពី Data Integrity។
  5. ការបង្កើត Certificate Hash។
  6. ការប្រៀបធៀប Hash មុន និងក្រោយកែទិន្នន័យ។
  7. ការយល់ពី Tamper Detection។
  8. មូលដ្ឋានសម្រាប់បន្តទៅមេរៀនទី៥៖ Transaction and Block Structure។

២២. Notes

សូមបញ្ជាក់ថា Hashing គឺជាគំនិតសំខាន់បំផុតមួយក្នុង Blockchain។ ប្រសិនបើនិស្សិតមិនយល់ Hashing ពួកគេនឹងពិបាកយល់ Block Hash, Previous Hash និង Chain Validation នៅមេរៀនបន្ទាប់។

ការផ្លាស់ប្តូរ Hash ដោយផ្ទាល់ក្នុង Console។ ឧទាហរណ៍ បញ្ចូល Sok Dara ហើយបន្ទាប់មក Sok Daraa ដើម្បីឱ្យនិស្សិតឃើញថា Hash ខុសគ្នាទាំងស្រុង។ ការបង្ហាញលទ្ធផលជាក់ស្តែងនឹងធ្វើឱ្យនិស្សិតយល់លឿនជាងការពន្យល់ទ្រឹស្តីតែប៉ុណ្ណោះ។


២៣. ការណែនាំសម្រាប់បញ្ចូលរូបភាពក្នុងមេរៀនទី ៤

Figureកន្លែងបញ្ចូលគោលបំណង
Figure 1ផ្នែក ៣បង្ហាញ Certificate Record ទៅ SHA-256 Hash
Figure 2ផ្នែក ៤បង្ហាញ Hash ជា Digital Fingerprint
Figure 3ផ្នែក ៧បង្ហាញ Simple Hash Generator
Figure 4ផ្នែក ៩បង្ហាញ Certificate Hash Generator
Figure 5ផ្នែក ១១បង្ហាញ Hash ផ្លាស់ប្តូរពេល Data ផ្លាស់ប្តូរ
Figure 6ផ្នែក ១២បង្ហាញ Hashing Records from CSV
Figure 7ផ្នែក ១៣បង្ហាញ Tamper Detection Using Hash Comparison

២៤. IEEE-Style References

[1] Python Software Foundation, “hashlib — Secure hashes and message digests,” Python 3 Documentation, 2026.

[2] National Institute of Standards and Technology, “FIPS 180-4, Secure Hash Standard (SHS),” 2015.

[3] Python Software Foundation, “json — JSON encoder and decoder,” Python 3 Documentation, 2026.

[4] D. Yaga, P. Mell, N. Roby, and K. Scarfone, “Blockchain Technology Overview,” National Institute of Standards and Technology, NISTIR 8202, 2018.

ចែករំលែក
រក្សាទុក
ការផ្សព្វផ្សាយ
ការផ្សព្វផ្សាយ
មតិយោបល់ 0
ចូលគណនី ដើម្បីបញ្ចេញមតិ