OpenSSL 對稱式加解密說明
隨機產生加密參數
以下指令會透過密碼 'abcd1234' 產生出
- salt
- key
- iv
openssl enc -aes-256-cbc -pbkdf2 -iter 1000000 -P -k abcd1234 -md sha256
- -P 表示輸出 key 以及 iv
- -k 輸入任意密碼;因 openssl 是透過密碼當作產生 key & iv 的因子,故必須提供此參數
- -md 指定訊息摘要方法
以下為上列指令輸出範例:
salt=A2D7206210C2FD6C
key=15628F88B78915BE4982EA70014AC433544D75A4A71D85CB64D3D93D27EAB860
iv =5856ABFD9AD1A84CB86D06CBDB051041
OpenSSL 加密過程說明及使用範例
openssl 在對檔案做加密的時候,
會要求使用者提供一組密碼 (passphrase),
同時預設會產生一組隨機鹽 (salt),
然後透過該組密碼及鹽做運算得到密鑰 (key) 及初始向量 (iv),
因而透過密鑰及初始向量對檔案做加密運算,
解密的時候也是相同行為,
使用者提供加密時輸入的密碼,
openssl 使用這組密碼與被加密的檔案檔頭上記錄的鹽做運算,
反解出原本的金鑰及初始向量,
然後利用這組密鑰及初始向量對檔案做解密。
備註: 隨機鹽 (salt) 會被記錄在被加密過後的檔案檔頭 ( header,"Salted__" 後面 ) 裡面,而隨機 IV 則是會記錄在密文本體的前 16 個 bytes 之中。
加解密範例參考:
[加密]
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 1000000 -e -in {your_plain_text_file} -out {your_cipher_text_file}
[解密]
openssl enc -aes-256-cbc -pbkdf2 -iter 1000000 -d -in {your_cipher_text_file} -out {your_plain_text_file}
以上加解密建議使用 PBKDF2 以及迭代次數設為 1,000,000 為最佳。
加解密指定 Key 以及 IV
若想透過指定得 Key 及 IV 執行加密,可以使用下列語法:
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 1000000 -e -in {your_plain_text_file} -K 15628F88B78915BE4982EA70014AC433544D75A4A71D85CB64D3D93D27EAB860 -iv 5856ABFD9AD1A84CB86D06CBDB051041
即可將指定的檔案內容加密,反之解密可執行以下語法:
openssl enc -aes-256-cbc -pbkdf2 -iter 1000000 -d -in {your_cipher_text_file} -K 15628F88B78915BE4982EA70014AC433544D75A4A71D85CB64D3D93D27EAB860 -iv 5856ABFD9AD1A84CB86D06CBDB051041
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information