在實際應用中,如果只用非對稱加密(RSA)直接加密資料,會遇到兩個問題:
因此,現代系統大多採用 混合加密(Hybrid Encryption):
這樣做的好處是:
👉 這正是 HTTPS、VPN、S/MIME、電子憑證等安全機制的基礎。
# 產生一組隨機金鑰 (32 bytes = 256 bits)
openssl rand 32 > symkey.bin
# 使用對稱金鑰 (AES-256-CBC) 加密 secret.txt
openssl enc -aes-256-cbc -salt -in secret.txt -out secret.enc -pass file:./symkey.bin
此時:
secret.enc
:加密後的機密檔案symkey.bin
:對稱金鑰,暫時不能直接傳送openssl pkeyutl -encrypt -inkey public.pem -pubin -in symkey.bin -out symkey.enc
憑證本身包含了公鑰,可以直接用來加密:
openssl pkeyutl -encrypt -inkey certificate.crt -pubin -in symkey.bin -out symkey.enc
或是先從憑證裡導出公鑰檔,再使用:
# 從憑證中抽取公鑰
openssl x509 -pubkey -noout -in certificate.crt > public.pem
# 再用公鑰檔加密
openssl pkeyutl -encrypt -inkey public.pem -pubin -in symkey.bin -out symkey.enc
結果:
symkey.enc
:被 RSA 包裝過的對稱金鑰,可以安全傳送# 用私鑰解密對稱金鑰
openssl pkeyutl -decrypt -inkey private.pem -in symkey.enc -out symkey.dec
# 用解出的金鑰解密檔案
openssl enc -d -aes-256-cbc -in secret.enc -out secret.dec -pass file:./symkey.dec
解密完成後,secret.dec
就是原始明文資料 🎉
混合加密流程總結:
這個設計結合了「對稱加密的高效能」與「非對稱加密的安全性」,正是現代安全通訊的基石。
這家聽很多人講很厲害,今天看到同事訂這家就借來拍一下,看起來是不錯,可以試試