openSSLを使用しているLinux Webサーバー上で実行されているWindows 64マシン(私のPC)とPHP間の単純な暗号化/ 。Linux Webサーバー上で実行されているWindows PCとPHP間のopenSSLを暗号化/復号化する
私のWindowsマシンでは、OpenSSL v1.0.2kをWin64用にインストールしました。次のコマンドを使用して、単純なパスワードとsecretkey.txtにある単純なキーを使用して暗号化された文字列を作成します。
enc -aes-256-cbc -A -base64 -nopad -nosalt -pass pass:hello -in secretkey.txt
私は上記のコマンドを実行すると、私は次の文字列を取得:上記の文字列を使用して
3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=
を、私は自分のLinux、Webサーバー上のPHPが解読できることを期待していますそれこのような:
$encrypted = '3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=';
$enc = 'aes-256-cbc';
$password = 'hello';
$key = openssl_decrypt($encrypted, $enc, $password, OPENSSL_ZERO_PADDING);
echo $key .' should equal this-1234-is-4567-my-8910-secret';
しかし、代わりに私はこれを取得:
9(この1234は-4567-my-8910-secretと等しくなるはずです)
I 「以下のサイトを審査し、複数のバージョンを試してみましたましたが、私はそれを正しく復号化するために取得することはできません。
Open SSL Enc
Open SSL Command Line
PHP Decrypt
ない重複。問題は、コマンドライン(ウィンドウ)から暗号化し、phpを使って解読しようとすることです。推奨される解決策はすべてPHP内ですべて暗号化と解読を行うことです。 – Marc
PHPコードでopensslの出力をbase64でデコードしていますか? –
ゼロ埋め込みはあまり考えられません。一般に、PKCS#7(néePKCS#5)のパディングが使用されます。ゼロパディングでは、バイナリデータを暗号化することができません。このバイナリデータはゼロ(0x00)バイトで終了します。 – zaph