CRYPTO TOOLS

SHA256 · AES · RSA | 純前端加密工具

#
SHA-256
單向雜湊函數,產生 256 位元 (64 字元) 的摘要
*固定內容駝峰首字大寫
*數字+四位大寫
SHA-256 Hash (完整 64 字元)
—
前 32 字元 (0-31) - 可作為 Key
—
後 16 字元 (32-47) - 可作為 IV
—
⬡
AES 加解密
對稱式加密,支援多種模式與填充方式
輸出結果
—
◈
RSA-2048-OAEP
非對稱式加密,使用公鑰/私鑰對
手動輸入金鑰
尚未產生金鑰...
尚未產生金鑰...
加密/解密 結果
—
簽章/驗章 結果
—

編碼、雜湊、加密:三件不一樣的事

這三個詞經常被混用,但用途完全不同,選錯會直接造成資安漏洞。

可還原?需要金鑰?用途
編碼(Base64、Hex)可以,任何人都能不需要讓二進位資料能在文字通道中傳輸
雜湊(SHA-256)不可,單向不需要驗證完整性、儲存密碼
加密(AES、RSA)可以,但需金鑰需要保護內容不被第三方讀取

最常見的誤用:把 Base64 當成加密。Base64 沒有金鑰,任何人拿到字串立刻就能還原。它的目的是「格式轉換」,不是「保密」。若你在程式碼或設定檔中看到密碼被 Base64「保護」,那等於是明文。需要編碼轉換請使用編碼轉換工具,需要保密才用本頁的 AES 或 RSA。

SHA-256 雜湊能做什麼、不能做什麼

雜湊函數把任意長度的輸入轉成固定長度的輸出(SHA-256 固定 256 位元,即 64 個十六進位字元),而且無法反推回原文。它有三個關鍵特性:

典型用途:驗證檔案完整性

下載軟體時網站常會附上一串 SHA-256 值。把下載到的檔案算一次雜湊,比對是否相同,就能確認檔案在傳輸過程中沒有損毀或被竄改。

用來存密碼?請改用專用演算法

直接把密碼做 SHA-256 存進資料庫,安全性其實不足。原因是 SHA-256 設計上就是要跑得快——這對驗證檔案是優點,對防禦密碼破解卻是致命傷。現代 GPU 每秒可以嘗試數十億次雜湊,常見密碼幾秒內就會被彩虹表比對出來。

正確做法是使用專為密碼設計的慢速雜湊,例如 bcrypt、scrypt 或 Argon2。它們刻意消耗運算資源與記憶體,並內建每個使用者不同的隨機「鹽」(salt),讓彩虹表失效。

AES:對稱式加密的實務細節

AES 是目前最廣泛使用的對稱式加密演算法——加密和解密用同一把金鑰。它速度快,適合處理大量資料。但「用 AES」不等於「安全」,關鍵在於參數怎麼選。

加密模式(Mode)

模式需要 IV說明
CBC需要最常見的通用選擇。每個區塊與前一個區塊做 XOR,相同明文會產生不同密文
ECB不需要不建議使用。相同明文區塊會產生完全相同的密文,會洩漏資料結構
CFB / OFB / CTR需要串流模式,可處理非區塊長度的資料,不需填充

為什麼 ECB 不該用:ECB 對每個 16 位元組區塊獨立加密,因此明文中重複的內容在密文中也會重複。經典的示範是拿一張圖片用 ECB 加密——加密後仍然看得出原圖的輪廓,因為大片同色區域產生了大片相同的密文。任何有規律的資料(表格、固定格式的紀錄)用 ECB 都會洩漏結構。

初始化向量(IV)

IV 的作用是讓同樣的明文配同樣的金鑰,每次加密都產生不同的密文。這很重要——否則攻擊者能從密文重複的規律推斷出資訊。

三個使用原則:

填充方式(Padding)

AES 一次處理 16 位元組,資料長度不足時要補齊。如果沒有特殊需求,選 PKCS7 就對了——它是最通用的標準,跨語言相容性最好。

ZeroPadding 用零補齊,問題是解密後無法分辨結尾的零是填充還是原始資料的一部分,處理二進位內容時會出錯。NoPadding 則要求輸入長度必須是 16 的倍數,否則直接失敗。

金鑰長度

AES-128、AES-192、AES-256 指的是金鑰長度。AES-128 以現有的運算能力仍然安全,並非「比較弱」;AES-256 提供更長的安全邊際,也常見於法規要求。兩者的效能差異在一般應用中可以忽略。

RSA:什麼時候該用非對稱式加密

RSA 使用一對金鑰:公鑰加密、私鑰解密。公鑰可以公開發布,私鑰必須嚴格保密。這解決了對稱式加密最大的難題——如何安全地把金鑰交給對方。

RSA 不適合加密大量資料

RSA 的運算速度比 AES 慢上數百倍,而且單次能加密的資料長度受金鑰長度限制。2048 位元的 RSA 搭配 OAEP 填充,一次最多只能加密約 190 位元組。

因此實務上採用混合加密:用 AES 加密實際內容,再用 RSA 加密那把 AES 金鑰。HTTPS、PGP 加密郵件都是這個架構——兼顧了 AES 的速度與 RSA 的金鑰交換能力。

數位簽章:反過來用

簽章的方向與加密相反:用私鑰簽名、用公鑰驗證。因為只有持有私鑰的人能產生有效簽章,任何人都能用公鑰確認「這份資料確實出自私鑰持有者,且未被竄改」。

這提供了加密所沒有的兩個保證:來源認證與不可否認性。軟體更新檔的簽章、電子憑證、區塊鏈交易都建立在這個機制上。

這個工具的安全設計

加解密工具本身就是敏感的——你會在裡面輸入金鑰和機密內容。因此本頁做了兩件事:

使用建議:本工具適合開發除錯、學習演算法、驗證加解密結果。若要處理真正的高機密資料,建議在離線環境使用專用軟體,並自行審視程式碼。無論使用哪個線上工具,都不應該貼上正式環境的生產金鑰。

資料安全

本工具不蒐集、不記錄、不傳送任何你輸入的內容。完整說明請見隱私權政策。