2

「ボタン」を使用してファイルを暗号化および復号化しようとしています (AES 256)。ライブラリの Qt への統合は正常に完了しました。このチュートリアルのようにインターネットで見つけた多くの例に従いましたが、次のようになりました

error: 
class Botan::S2K' has no member named 'set_iterations'

チュートリアルが作成されたボタンのバージョンが古く、使用しているバージョン (1.10.5) に互換性がないことがわかりました。

私の質問は:
新しいバージョンのチュートリアルはどこにありますか? 存在しない場合、以前のバージョン (1.8 または 1.9) の Windows インストーラーはどこからダウンロードできますか?

これまでの私のコードは次のとおりです:(暗号化)

string file = "...";
string fileEncrypted = "...";

Botan::LibraryInitializer init;

string passphrase = "password";
AutoSeeded_RNG rng;
S2K* s2k = get_s2k("PBKDF2(SHA-256)");
s2k->set_iterations(4049);

SecureVector<byte> key_and_IV = s2k->derive_key(48, passphrase).bits_of();
SymmetricKey key(key_and_IV, 32);
InitializationVector iv(key_and_IV +32, 16);

std::ifstream in(file, std::ios::binary);
std::ofstream out(fileEncrypted, std::ios::binary);

Pipe pipe(get_cipher("AES-256/CBC", key, iv,ENCRYPTION),new DataSink_Stream(out));
pipe.start_msg();
in >> pipe;
pipe.end_msg();
4

1 に答える 1

0

バージョン 1.9 はこちらから入手できますが、残念ながら新しいバージョンの使用に関して 2 つの問題があります。

  • get_s2k()は廃止されつつあり、get_pbkdf()代わりに使用する必要があります。

  • 非推奨の S2k の代わりに PBKDF を使用する場合、ミューテーター メソッドで反復を設定する代わりに、反復の数をバージョンの serve_key に渡すことができます。

たとえば、encrypt2 の例を参照してください。

...
PKCS5_PBKDF2 pbkdf2(new HMAC(new SHA_160));

const u32bit PBKDF2_ITERATIONS = 8192;

SecureVector<byte> salt(8);
rng.randomize(&salt[0], salt.size());

SecureVector<byte> master_key = pbkdf2.derive_key(48, passphrase,
                                                 &salt[0], salt.size(),
                                                 PBKDF2_ITERATIONS).bits_of()
...

doc/examplesリリースを取得して解凍すると、フォルダー内の詳細についてさらに例を確認できます。

于 2014-01-02T04:27:46.030 に答える