1

私は対称暗号化の経験がありません。次のコードを使用して、php で pdf ファイルを暗号化しています。

$source_filepath = RB::get('docroot') . RB::get('baseUrl') . '/submissions/' . $this->_filename;
$encrypted_filepath =  $source_filepath . '.nc';
$pdf_data = file_get_contents($source_filepath);
$encrypted_data = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, '1234567812345678', $pdf_data, MCRYPT_MODE_ECB);
file_put_contents($encrypted_filepath, $encrypted_data);

次に、別のコンピューターのデスクトップ アプリケーション/ユーティリティを使用して、php の外部で暗号化を解除する必要があります。aescrypt ユーティリティ ( http://www.aescrypt.com/ ) を使用してファイルの復号化を試みました。

「エラー: 不正なファイル ヘッダー (aescrypt ファイルではないか、破損していますか? [c、ffffffff0、fffffffe])」

だけでなく、次のような mcrypt コマンドも表示されます。ファイル thefile.pdf.nc は正常に復号化されませんでした。

PHPの外でencryptで暗号化されたものはまだ解読できていません。私はフグを使用して bcrypt ( http://bcrypt.sourceforge.net/ ) で復号化してみましたが、同様の結果が得られました。暗号化がどのように機能するかについての私の無知が原因だと思いますが、助けや教育をいただければ幸いです。ありがとう。

4

2 に答える 2

1

次のコードを使用して、php で pdf ファイルを暗号化しています。

aescrypt からエラーが発生する理由は、書き込んでいるファイルが AEScrypt ファイル形式とは関係がないためです。幸いなことに、AESCrypt の開発者は、ファイル形式に関する非常に詳細な手順を提供しています。

実装後も問題が解決しない場合は、AESCrypt メーリング リストを試してみて、開発者に連絡して、PHP での互換性のある暗号化/復号化の開発を後援することを提案することもできません。

于 2010-06-03T19:25:36.720 に答える
0

PHPやmcryptはわかりませんが、呼び出し行に基づいて、opensslコマンドラインユーティリティを使用してファイルを復号化できると思います。次の例は、必要なものに近いはずです。

 openssl aes-128-ecb -d -K 303132333435363738303132333435363738 -iv 00000000000000000000000000000000 -P -nopad -nosalt -in cipherfile -out plainfile

注:パディングは自分で取り除く必要があります。mcrypt_encryptは、データをブロックサイズの倍数にパディングするために「\0」文字を明らかにタックします。

于 2010-06-04T12:41:34.310 に答える