1
$ echo 'this is text' > text.1
$ openssl enc -aes-256-cbc -a -k "thisisapassword" -in text.1 -out text.enc
$ openssl enc -d -aes-256-cbc -a -k "thisisapassword" -in text.enc -out text.2
$ cat text.2
this is text

私はopensslでこれを行うことができます。さて、m2crypto で同じことを行うにはどうすればよいでしょうか。ドキュメントにはこれがありません。snv テストケースを見ましたが、まだ何もありません。http://passingcuriosity.com/2009/aes-encryption-in-python-with-m2crypto/ (aes_256_cbc に変更) という1 つのサンプルを見つけました。これは、独自の文字列を暗号化/復号化しますが、作成されたものは復号化できません。 openssl であり、それが暗号化するものはすべて openssl から復号化できません。

多くのファイルがすでにこれで暗号化されているため、aes-256-cbc で enc/dec できる必要があり、aes-256-cbc の出力を適切に処理する他の多くのシステムも配置されています。

パスワード フレーズのみを使用し、IV は使用しません。したがって、IV を \0 * 16 に設定することは理にかなっていますが、これも問題の一部であるかどうかはわかりません。

m2crypto と互換性のある AES 256 を実行するサンプルを持っている人はいますか?

また、いくつかの追加のライブラリを試して、それらがよりうまく機能するかどうかを確認します.

4

1 に答える 1

1

問題の一部は、openssl で作成されたファイルに、先頭に追加された 16 バイトのソルト情報 Salted__xxxxxxxx が含まれていることです。したがって、これらを最初に抽出する必要があり、その後で復号化が行われる可能性があります。次の問題は、元のパスワードを取得し、ソルトを振りかけ、そこから生成されたキーを取得し、復号化用のキー/iv ペアを作成することです。ハッシュでキーの最初のラウンドを作成できましたが、256 ビットであるため、成功するには 2 ラウンドが必要です。問題は、ハッシュの 2 番目のラウンドを作成することです。

また、Python 2.4 にロックされているため、導入される将来の主要なルーチンの一部が機能しないことにも言及する必要があります。

于 2010-05-14T17:47:48.380 に答える