SHA256 · AES · RSA | 純前端加密工具
尚未產生金鑰...
尚未產生金鑰...
這三個詞經常被混用,但用途完全不同,選錯會直接造成資安漏洞。
| 可還原? | 需要金鑰? | 用途 | |
|---|---|---|---|
| 編碼(Base64、Hex) | 可以,任何人都能 | 不需要 | 讓二進位資料能在文字通道中傳輸 |
| 雜湊(SHA-256) | 不可,單向 | 不需要 | 驗證完整性、儲存密碼 |
| 加密(AES、RSA) | 可以,但需金鑰 | 需要 | 保護內容不被第三方讀取 |
最常見的誤用:把 Base64 當成加密。Base64 沒有金鑰,任何人拿到字串立刻就能還原。它的目的是「格式轉換」,不是「保密」。若你在程式碼或設定檔中看到密碼被 Base64「保護」,那等於是明文。需要編碼轉換請使用編碼轉換工具,需要保密才用本頁的 AES 或 RSA。
雜湊函數把任意長度的輸入轉成固定長度的輸出(SHA-256 固定 256 位元,即 64 個十六進位字元),而且無法反推回原文。它有三個關鍵特性:
下載軟體時網站常會附上一串 SHA-256 值。把下載到的檔案算一次雜湊,比對是否相同,就能確認檔案在傳輸過程中沒有損毀或被竄改。
直接把密碼做 SHA-256 存進資料庫,安全性其實不足。原因是 SHA-256 設計上就是要跑得快——這對驗證檔案是優點,對防禦密碼破解卻是致命傷。現代 GPU 每秒可以嘗試數十億次雜湊,常見密碼幾秒內就會被彩虹表比對出來。
正確做法是使用專為密碼設計的慢速雜湊,例如 bcrypt、scrypt 或 Argon2。它們刻意消耗運算資源與記憶體,並內建每個使用者不同的隨機「鹽」(salt),讓彩虹表失效。
AES 是目前最廣泛使用的對稱式加密演算法——加密和解密用同一把金鑰。它速度快,適合處理大量資料。但「用 AES」不等於「安全」,關鍵在於參數怎麼選。
| 模式 | 需要 IV | 說明 |
|---|---|---|
| CBC | 需要 | 最常見的通用選擇。每個區塊與前一個區塊做 XOR,相同明文會產生不同密文 |
| ECB | 不需要 | 不建議使用。相同明文區塊會產生完全相同的密文,會洩漏資料結構 |
| CFB / OFB / CTR | 需要 | 串流模式,可處理非區塊長度的資料,不需填充 |
為什麼 ECB 不該用:ECB 對每個 16 位元組區塊獨立加密,因此明文中重複的內容在密文中也會重複。經典的示範是拿一張圖片用 ECB 加密——加密後仍然看得出原圖的輪廓,因為大片同色區域產生了大片相同的密文。任何有規律的資料(表格、固定格式的紀錄)用 ECB 都會洩漏結構。
IV 的作用是讓同樣的明文配同樣的金鑰,每次加密都產生不同的密文。這很重要——否則攻擊者能從密文重複的規律推斷出資訊。
三個使用原則:
AES 一次處理 16 位元組,資料長度不足時要補齊。如果沒有特殊需求,選 PKCS7 就對了——它是最通用的標準,跨語言相容性最好。
ZeroPadding 用零補齊,問題是解密後無法分辨結尾的零是填充還是原始資料的一部分,處理二進位內容時會出錯。NoPadding 則要求輸入長度必須是 16 的倍數,否則直接失敗。
AES-128、AES-192、AES-256 指的是金鑰長度。AES-128 以現有的運算能力仍然安全,並非「比較弱」;AES-256 提供更長的安全邊際,也常見於法規要求。兩者的效能差異在一般應用中可以忽略。
RSA 使用一對金鑰:公鑰加密、私鑰解密。公鑰可以公開發布,私鑰必須嚴格保密。這解決了對稱式加密最大的難題——如何安全地把金鑰交給對方。
RSA 的運算速度比 AES 慢上數百倍,而且單次能加密的資料長度受金鑰長度限制。2048 位元的 RSA 搭配 OAEP 填充,一次最多只能加密約 190 位元組。
因此實務上採用混合加密:用 AES 加密實際內容,再用 RSA 加密那把 AES 金鑰。HTTPS、PGP 加密郵件都是這個架構——兼顧了 AES 的速度與 RSA 的金鑰交換能力。
簽章的方向與加密相反:用私鑰簽名、用公鑰驗證。因為只有持有私鑰的人能產生有效簽章,任何人都能用公鑰確認「這份資料確實出自私鑰持有者,且未被竄改」。
這提供了加密所沒有的兩個保證:來源認證與不可否認性。軟體更新檔的簽章、電子憑證、區塊鏈交易都建立在這個機制上。
加解密工具本身就是敏感的——你會在裡面輸入金鑰和機密內容。因此本頁做了兩件事:
使用建議:本工具適合開發除錯、學習演算法、驗證加解密結果。若要處理真正的高機密資料,建議在離線環境使用專用軟體,並自行審視程式碼。無論使用哪個線上工具,都不應該貼上正式環境的生產金鑰。
本工具不蒐集、不記錄、不傳送任何你輸入的內容。完整說明請見隱私權政策。