Toolonit
  1. 首頁
  2. 加密
  3. RSA 加密 / 解密

RSA 加密與解密

以 RSA 公鑰加密、以私鑰解密(OAEP 或 PKCS#1 v1.5)。

填充方式

請用加密時所用的填充方式解密。OAEP 搭配 SHA-256 是現代的預設;PKCS#1 v1.5 只用於舊系統。

輸出格式
用 OpenSSL 解密(.bin 檔):
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

用對方的 RSA 公鑰(或其憑證)加密一段簡短的秘密,讓只有私鑰持有者能讀取;或用你的私鑰解密密文。可選擇 OAEP 搭配 SHA-256(建議)、OAEP 搭配 SHA-1 或 PKCS#1 v1.5;結果為 Base64 或十六進位,可與 OpenSSL 搭配使用。全部在瀏覽器中執行,金鑰與訊息都不會離開你的裝置;免費,也不需要註冊。

如何以 RSA 加密與解密

  1. 選擇「加密」或「解密」,然後貼上金鑰或開啟金鑰檔:加密時用公鑰或憑證,解密時用私鑰(PKCS#8 或 PKCS#1)。
  2. 選擇填充方式:除非對方需要其他方式,否則用 OAEP · SHA-256。
  3. 輸入訊息,或以 Base64 或十六進位貼上密文。結果會隨輸入即時出現。
  4. 複製結果,或把密文下載為 .bin 檔,供 OpenSSL 使用。

功能

  • 以公鑰、憑證或私鑰的公開部分加密;以私鑰解密
  • OAEP 搭配 SHA-256(預設)、OAEP 搭配 SHA-1,或 PKCS#1 v1.5
  • PEM 或 DER 格式的金鑰:SPKI、PKCS#1、PKCS#8 與 X.509 憑證,最高 16384 位元
  • 密文可輸出為 Base64、十六進位或 .bin 檔;可解密貼上的 Base64 或十六進位,或開啟的 .bin 檔
  • 顯示金鑰與填充方式最多可加密多少位元組,以及對應的 openssl pkeyutl 指令
  • 在瀏覽器的 WebAssembly 背景執行緒中執行

隱私安全嗎?

是的。加密與解密都在瀏覽器中、在 WebAssembly 背景執行緒裡進行;金鑰、訊息與密文絕不會上傳或儲存。

常見問題

訊息最長可以多長?

RSA 一次只加密一個區塊。使用 2048 位元金鑰時,OAEP SHA-256 最多 190 位元組,OAEP SHA-1 最多 214 位元組,PKCS#1 v1.5 最多 245 位元組;金鑰越大,可加密的內容越多。更長的內容,請用對稱加密法加密資料,或使用「檔案加密」工具。

為什麼每次的密文都不同?

每種填充方式都會在加密前加入隨機位元組,所以同一則訊息每次都會得到新的密文。這是刻意的設計,而每一份密文都能解密回同一則訊息。

可以和 OpenSSL 搭配使用嗎?

可以。在這裡產生的密文,可以用 openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256(或 rsa_padding_mode:pkcs1)解密,而用 openssl pkeyutl -encrypt 產生的密文也能在這裡解密。兩端請使用相同的填充方式。

可以使用哪些金鑰格式?

PEM 公鑰(BEGIN PUBLIC KEY 或 BEGIN RSA PUBLIC KEY)、憑證,以及未加密的 PKCS#8(BEGIN PRIVATE KEY)或 PKCS#1(BEGIN RSA PRIVATE KEY)私鑰,也支援 DER 檔。受密碼保護的金鑰與 OpenSSH 金鑰需要先轉換,工具會說明轉換方法。

為什麼解密失敗?

通常是填充方式或金鑰的問題。請使用與加密時相同的填充方式,以及與加密所用公鑰成對的私鑰;工具刻意不區分這兩種錯誤,所以請試試其他填充方式。密文的長度一定與金鑰相同(2048 位元金鑰為 256 位元組),比這更短的密文,就是複製時被截斷了。

相關工具