今日學習目標是理解雜湊(hash)在醫療紀錄安全中的應用,並透過Python撰寫程式,示範如何讓病歷資料在寫入後具備「不可竄改」特性。
一、理論重點
二、案例分享
2016 年,美國某醫院發生 病歷遭內部人員未經授權竄改 的事件,檢查報告與用藥紀錄被更改,導致病患治療錯誤。若當時有雜湊驗證機制,任何異動都會被及時偵測,避免影響醫療判斷。
三、簡單程式範例
import hashlib
# 建立病歷紀錄(模擬)
medical_records = [
{"patient": "Alice", "diagnosis": "Diabetes Type 2"},
{"patient": "Bob", "diagnosis": "Hypertension"},
{"patient": "Charlie", "diagnosis": "Asthma"}
]
# 計算病歷的 hash
def calculate_hash(record):
record_str = record["patient"] + record["diagnosis"]
return hashlib.sha256(record_str.encode()).hexdigest()
# 建立不可竄改的病歷資料庫(紀錄 + hash)
secure_db = []
for record in medical_records:
secure_db.append({
"record": record,
"hash": calculate_hash(record)
})
# 正常檢查
print("=== 正常驗證 ===")
for item in secure_db:
rec, h = item["record"], item["hash"]
print(f"病人 {rec['patient']} - 診斷: {rec['diagnosis']} - Hash 驗證: {h == calculate_hash(rec)}")
# 模擬竄改(更改 Bob 的診斷)
secure_db[1]["record"]["diagnosis"] = "Healthy"
print("\n=== 竄改後驗證 ===")
for item in secure_db:
rec, h = item["record"], item["hash"]
print(f"病人 {rec['patient']} - 診斷: {rec['diagnosis']} - Hash 驗證: {h == calculate_hash(rec)}")
只要病歷被修改(即使只是「Hypertension」改成「Healthy」),雜湊值就會不匹配,立即顯示 驗證失敗 (False),達到「不可竄改」的效果。執行結果如下