2012-08-10 91 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