iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
自我挑戰組

從0開始學習Java系列 第 12

加密是什麼?

  • 分享至 

  • xImage
  •  

一、什麼是加密 (Encryption)
加密:把一段資料透過某種演算法轉換成「看不懂的東西」,只有拿到「金鑰」的人才能解回原文。
目的:保護機密,避免中途被偷看。
加密 ≠ 雜湊(Hash)。

(一)分類:
1.對稱式加密 (Symmetric Encryption)
加密 & 解密用 同一把金鑰。
範例:AES、DES。
特點:速度快,但金鑰必須安全地分享,否則會被破解。

原文: Hello
金鑰: K
加密結果: 9f8a7d...
解密(用K): Hello

(二)非對稱式加密 (Asymmetric Encryption)
使用一對金鑰:公鑰 (Public Key) 和 私鑰 (Private Key)。
公鑰:公開給任何人使用,加密資料。
私鑰:只有自己持有,用來解密。
範例:RSA、ECC。
特點:安全性高,但運算比較慢。

公鑰加密: Hello → Encrypted Data
私鑰解密: Encrypted Data → Hello

二、MD5 / SHA-256 (雜湊演算法,Hashing)
雜湊 (Hash):把資料透過演算法轉成「固定長度」的摘要值。
特點:
不可逆(不能從 Hash 值回推原始資料)。
輸入一樣 → 輸出一定一樣。
輸入稍微不同 → 輸出完全不同。

(一)MD5
產生 128 bits (16 bytes) → 32 個十六進位字元。
舊時常用於檔案完整性驗證、密碼儲存。
已知有 碰撞攻擊(兩個不同輸入可能得到相同 MD5)。
所以現在已不建議單獨使用。

(二)SHA-256
屬於 SHA-2 演算法家族。
產生 256 bits (32 bytes) → 64 個十六進位字元。
比 MD5 安全得多,目前仍然廣泛使用。
常用於:區塊鏈、數位簽章、SSL 憑證驗證。

輸入: Hello
MD5:    8B1A9953C4611296A827ABF8C47804D7
SHA-256: 185F8DB32271FE25F561A6FC938B2E264306EC304EDA518007D1764826381969

三、公鑰 (Public Key) 和 私鑰 (Private Key)
這是 非對稱加密的核心概念:

1.公鑰 (Public Key)
可以公開,任何人都能拿到。
用途:加密資料、驗證數位簽章。

2.私鑰 (Private Key)
嚴格保密,只有自己擁有。
用途:解密資料、產生數位簽章。

用法:
加密傳輸
A 想傳資料給 B → 用 B 的「公鑰」加密。
只有 B 的「私鑰」能解開 → 確保資料只有 B 看得到。

數位簽章
B 用自己的「私鑰」簽署一份資料。
任何人都能用 B 的「公鑰」驗證 → 確保資料真的來自 B,沒被竄改。

四、總結
(一)加密 (Encryption):可以還原,保障機密性。
(二)對稱加密:同一把金鑰(快,但金鑰分配難)。
(三)非對稱加密:公鑰 + 私鑰(安全,但慢)。
(四)雜湊 (Hash, MD5, SHA-256):不可逆,用於檢查完整性、驗證資料。
(五)公鑰 / 私鑰:非對稱加密中的一對金鑰,用來保護資料安全 & 驗證身份


上一篇
把 Set / List / Map / Collection / Collections 都串在一起
下一篇
Set介面-錯誤小範例
系列文
從0開始學習Java22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言