stackoverflow answer から次のコマンドを使用してファイルを暗号化しました。
openssl enc -in file_name -aes-256-cbc -pass stdin -out file_name.aes;
次のコマンドを実行して、このファイルを復号化できます。
openssl enc -in file_name.aes -d -aes-256-cbc -pass stdin -out file_name
ただし、復号化コマンドは、ファイルを暗号化したマシン(CentOS)でのみ機能します。暗号化されたファイルをコピーした場合file_name.aes
他のマシン(Fedoraで実行中)に転送し、それを復号化しようとすると、エラーメッセージが表示されます。
140667230762896:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592:
これは、間違ったパスワードを入力していることを示しています。 OpenSSL AES暗号化システムは依存していますか? CentOSでのみファイルを復号化でき、Fedoraではできないのはなぜですか?
ほとんどの場合、2つのシステムに互換性のないバージョンのOpenSSLがあります。確認するには、openssl version
を実行します。
失敗の理由は通常、デフォルトのメッセージダイジェストが2つのバージョン間で変更されており、古いバージョンはMD5を使用し、新しいバージョンはSHA256を使用しているためです。 OpenSSLは出力メッセージにハッシュタイプを保存せず、デフォルト以外のものを使用したい場合は、コマンドで明示的に指定することを想定しています。両方のコマンドに-md sha256
を追加してみてください。