OpenSSLコマンドを用いた共通鍵暗号
提供: セキュリティ
スポンサーリンク
ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。
目次
概要
ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。
公開鍵暗号の場合は、OpenSSLコマンドを用いた公開鍵暗号をご参照下さい。
インストール
使い方
AES によるデータの暗号化と復号
echo hoge > file.txt openssl rand 32 -out rand.txt -base64 openssl enc -e -aes128 -kfile rand.txt -in file.txt -out file.aes128_64 -base64 openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -base64
データの用意
暗号化するデータを用意します。これは、なんでも構いません。
echo hoge > file.txt
共通鍵の準備
AESは、共通鍵暗号方式です。そのため、共通鍵(パスワード)を事前に用意しておきます。
openssl rand 32 -out rand.txt -base64
データの暗号化
暗号化するデータは、 file.txt です。 暗号に使う共通鍵は、 rand.txt の1行目です。 暗号化したデータは、 file.aes128_64 に入ります。 暗号化したデータは、BASE64 エンコードします。
openssl enc -e -aes128 -kfile rand.txt -in file.txt -out file.aes128_64 -base64
暗号化したデータを BASE64 エンコードする必要がなければ、 -base64 のオプションは不要です。 暗号化するときに、-base64 を指定した場合、復号のときも-base64を指定します。
データの復号
復号する暗号化したデータは、 file.aes128_64 に入っています。 暗号に使う共通鍵は、 rand.txt の1行目です。 復号したデータは、標準出力に表示します。
openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -base64
ファイルに出力する場合は、-out オプションを使って、ファイルに書き出します。
openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -out file.aes128_64_decrypted -base64
AES によるデータの暗号化と復号 初期ベクトルを指定する
AES-128の秘密鍵(-K)と初期ベクトル(-iv)は、32桁の16進数(128bit)です。
% mkdir src % echo hoge > src/file.txt % openssl enc -aes-128-cbc -in src/file.txt -out src/file.txt.enc \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000 % openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000
初期ベクトルをあえて、違うものを指定した場合、下記のエラーが出ます。
% openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000001 bad decrypt 75925:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: bad decrypt: /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:337:
あえて、異なる秘密鍵を指定した場合、下記のエラーが出ます。
% openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcde0 -iv 00000000000000000000000000000000 bad decrypt 75926:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: bad decrypt: /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:330:
関連項目
ツイート
スポンサーリンク