Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
D
development_resource_index
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 68
    • Issues 68
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • yuan
  • development_resource_index
  • Issues
  • #36

Closed
Open
Created Aug 26, 2021 by joker@jokerReporter

OpenSSL 對稱式加解密說明

隨機產生加密參數

以下指令會透過密碼 'abcd1234' 產生出

  1. salt
  2. key
  3. 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
Edited Dec 27, 2024 by yuan
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None