[!NOTE]
この記事は 2012/10/14 に momoto.github.io へ投稿した内容を Qiita へ移行してきたものです
OpenSSL は様々な暗号方式による暗号化および復号化をサポートするセキュリティライブラリで、使用可能な暗号方式は openssl ciphers
で確認できます。
RSA暗号方式の 暗号化、復号、署名、検証 を利用する場合は openssl rsautl
を使用します。
暗号化
ファイルをRSA暗号方式で暗号化するには、秘密鍵または公開鍵のいずれかが必要になります。
秘密鍵“private_key”を使用して、ファイル“plain.txt”を暗号化する
$ openssl rsautl -encrypt -inkey private_key -in plain.txt -out encrypted
Enter pass phrase for private_key:
## 秘密鍵にパスフレーズが設定されていればパスフレーズの照合が必要です
公開鍵“public_key”を使用して、ファイル“plain.txt”を暗号化する
$ openssl rsautl -encrypt -pubin -inkey public_key -in plain.txt -out encrypted
## -pubin のオプションを加えることに注意します
上のコマンドで暗号化した場合、encrypted という名前でバイナリファイルとして出力されます。unable to load Public Key
とエラーになってしまう場合は、鍵の形式が無効です。使用できる公開鍵は次のような形式です。
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM2twTjVLOYMK2Y7uKQ03CeSc8B+0GjJ
xy0ir28fIfGb523ogDyWKDjMDx5pTBUpOgDYUgSpP/I6SzER1ArhcnMCAwEAAQ==
-----END PUBLIC KEY-----
復号
暗号化されたファイルを復号するには、秘密鍵が必要です。
秘密鍵“private_key”を使用して、暗号化されたファイル“encrypted”を復号する
$ openssl rsautl -decrypt -inkey private_key -in encrypted -out decrypted.txt
Enter pass phrase for private_key:
## 復号に成功すると、“decrypted.txt”にその内容が出力されます