gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:06 26 4
gpt4 key购买 nike

我正在尝试使用“Botan”来加密和解密文件 (AES 256)。在 Qt 中集成库已成功完成。我遵循了很多在 Internet 上找到的示例,例如 tutorial但我得到了以下内容

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();

最佳答案

您可以从 here 获得 1.9 版,但恐怕您在使用新版本时遇到了两个问题:

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

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

例如看他们的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 文件夹中查看更多示例以了解详细信息。

关于c++ - 使用 Botan 和 Qt 加密文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com