繁体   English   中英

使用Botan和Qt加密文件时出错

[英]Error encrypting files with Botan and Qt

我正在尝试使用“ Botan”来加密和解密文件(AES 256)。 将库成功集成到Qt中。 我遵循了本教程中在互联网上找到的许多示例,但得到了以下内容

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

我发现为该教程创建的Botan版本已经过时,并且我使用的版本(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();

您可以从此处获得1.9版,但是恐怕新版本的使用存在两个问题:

  • get_s2k()已过时,您应该改用get_pbkdf()

  • 除了使用mutator方法设置迭代次数外,您还可以在使用PBKDF而不是已弃用的S2k时将迭代次数传递给版本中的derive_key。

例如,请参见其实例的crypto2示例:

...
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文件夹中查看更多示例以获取详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM