2012-08-10 151 views
2

我试图找出两天内的错误,但仍未得出此未知原因。在Qt中编译botan示例示例时出现错误

我已经配置并编译了Botan库。一切正常的话,但是当尝试写这个示例代码来运行..

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

它说错误:“类牡丹:: PBKDF”没有名为“set_iterations”

我怎样才能解决这个成员问题?

+0

我不使用Botan库,但查看[文档](http://botan.randombit.net/doxygen/namespaceBotan.html#a5612cc6316fbfb5d5a5b100c9cf7064e),它看起来像'get_s2k()'已被弃用赞成'get_pbkdf()'。你使用的是什么版本的库? – sjwarner 2012-08-10 11:01:27

+0

我使用目前的稳定版本1.10 ....我应该使用旧版本比? – muktoshuvro 2012-08-10 18:01:34

回答

-1

也许你错过了你的库的头......作为你的错误信息说:“没有名为成员......”

+0

我已经对我的图书馆进行了双重检查,但没有一个没有错过... – muktoshuvro 2012-08-10 18:03:52

1

的牡丹为v1.11.1报告功能get_s2k()已被废弃的文档,建议您改为使用get_pbkdf()

根据该文档,get_sdk(algospec)刚刚返回get_pbkdf(algo_spec)打电话,这将给你一个指针的classBotan::PBKDF实例的结果。

首先第一件事情的话,你的代码需要更多的东西一样:

PBKDF *s2k = getpbkdf("PBKDF2(SHA-256)"); 

不幸的是不知道你想与s2k做什么,我不能帮助任何进一步的,因为文档没有引用PBKDF的公共成员函数set_iterations()。你收到你提到的错误,因为Botan::PBKDF确实没有名为set_iterations的成员。您需要阅读文档,确定set_iterations()在您现在已弃用的示例中的用途,以及如何在较新版本的库中实现该目的。

+0

您能将我们链接到您找到示例代码的位置吗?这可能有助于摆脱一些光:) – sjwarner 2012-08-10 21:38:02