SM4 加密與解密
以中國國家標準 SM4 加密與解密文字。
解密時還需要它。輸入的任何內容都不會離開這個頁面。
OpenSSL 的預設值是 10,000。任何次數都可以:次數越多,密碼越難猜;解密時需要相同的次數。
OpenSSL 最常用的選擇。需要 IV;會填充成完整區塊。
openssl enc -sm4-cbc -pbkdf2 -iter 10000 -a -AOpenSSL 會詢問密碼;把文字貼進去,或加上 -in 與 -out 檔案。
SM4(舊稱 SMS4)是中國的國家標準區塊加密法(GB/T 32907-2016),使用 128 位元金鑰與 16 位元組區塊;自 2021 年起也納入 ISO/IEC 18033-3。遵循中國商用密碼規範的系統,會在其他系統使用 AES 的地方改用 SM4,例如銀行與政府系統。在這裡可以用 SM4 加密與解密文字,預設為 CBC 模式,也可選 ECB、CTR、CFB 或 OFB,並使用 openssl enc -pbkdf2 格式的密碼,或你自己的 32 位數十六進位金鑰與 IV。SM4 在瀏覽器中執行,文字與金鑰都不會離開你的裝置,而且免費、免註冊。
如何用 SM4 加密與解密文字
- 選擇「加密」或「解密」。輸入要加密的文字,或貼上要解密的 Base64 或十六進位文字——格式會自動偵測。
- 輸入密碼(「產生」可建立高強度密碼),或切換到「金鑰與 IV(hex)」,輸入或產生 32 位數的金鑰與 32 位數的 IV(ECB 沒有 IV)。
- 選擇模式——除非資料以其他模式產生,否則用 CBC。只有在資料加密時沒有使用 PKCS#7 填充的情況下,才開啟「不填充」。
- 複製或下載結果。在「用 OpenSSL 執行相同操作」下方,頁面會顯示執行相同操作的 openssl 指令,其中不含你的密碼。
功能
- SM4(GB/T 32907-2016),使用 128 位元金鑰
- CBC、ECB、CTR、CFB 與 OFB 模式;PKCS#7 填充或不填充
- openssl enc -pbkdf2 格式的密碼模式,可用 openssl enc -sm4-cbc 讀取
- 每種模式都有對應的 openssl 指令
- 金鑰與 IV 模式:32 位數的十六進位金鑰與 IV,可自行輸入或產生
- Base64 或十六進位輸入與輸出;結果可複製、下載或交換
隱私安全嗎?
是的。SM4 在瀏覽器內以 WebAssembly 執行,密碼則由瀏覽器的 Web Crypto 進行延展;你的文字、密碼與金鑰絕不會上傳或儲存。
常見問題
SM4 安全嗎?
安全。目前沒有已知能實際破解完整 32 輪 SM4 的攻擊方式,它的 128 位元金鑰提供與 AES-128 大致相同的安全性。和這裡的任何加密法一樣,弱點在於密碼——請使用又長又隨機的密碼。
可以用 OpenSSL 解密嗎?
可以,使用 OpenSSL 3:echo 'U2FsdGVkX1…' | openssl enc -d -sm4-cbc -pbkdf2 -iter 10000 -a -A(OpenSSL 接著會詢問密碼)。其他模式請用 -sm4-ecb、-sm4-ctr、-sm4-cfb 或 -sm4-ofb;在金鑰與 IV 模式中,請以 -K <32 位十六進位數> -iv <32 位十六進位數> 取代 -pbkdf2 -iter。如果你的 openssl 不接受 sm4-cbc,表示它在建置時沒有納入 SM4。
支援 SM4-GCM 嗎?
不支援。SM4 提供 CBC、ECB、CTR、CFB 與 OFB,也就是 openssl enc 具備的模式;這些模式都無法偵測文字是否遭到修改。GCM 可以在 AES 頁面使用。
也能處理 SM2 或 SM3 嗎?
不能。SM2 是公開金鑰演算法,SM3 是雜湊函式;本頁只提供 SM4 對稱加密。雜湊方面,「雜湊計算」工具提供 MD5 與 SHA 系列,不含 SM3。