2014-01-21 186 views
1

我在加密+是新的,我需要做一些操作與我的字符串和整數(稱之爲散列函數和MAC的功能)我看到這個 Using Crypto++ to generate random hashes with SHA1並試圖跟隨它調試斷言失敗

我做了新的項目,編譯cryptolibs,鏈接它們(我想,沒錯,因爲沒有鏈接器錯誤)。它建立好,但從主要回報我有這個:

DEBUG ASSERTION FAILED! ... blablabla/dbgdel.cpp線52

表達:_Block_Type_Is_Valid(pHead-> nBlockUse)...

我弄得像在評論這些崗位,所以我不明白,爲什麼它發生。

代碼(包括像地址,因爲我真的很懶惰,使在連接好鏈接):

#include <C:\Users\esselesse\Documents\Visual Studio 2010\Projects\InfoProtect_Biometrics_Auth_Algorithm\InfoProtect_Biometrics_Auth_Algorithm\LIB\sha.h> 
#include <C:\Users\esselesse\Documents\Visual Studio 2010\Projects\InfoProtect_Biometrics_Auth_Algorithm\InfoProtect_Biometrics_Auth_Algorithm\LIB\filters.h> 
#include <C:\Users\esselesse\Documents\Visual Studio 2010\Projects\InfoProtect_Biometrics_Auth_Algorithm\InfoProtect_Biometrics_Auth_Algorithm\LIB\hex.h> 
#include <iostream> 
#include <string> 

using namespace CryptoPP; 
using namespace std; 

int main() 
{ 
    SHA1 sha1; 
    string source = "Hello"; //This will be randomly generated somehow 
    string hash = ""; 
    StringSource(source, true, new HashFilter(sha1, new HexEncoder(new StringSink(hash)))); 
} 

回答

1
DEBUG ASSERTION FAILED! ...blablabla/dbgdel.cpp Line 52 

Expression: _Block_Type_Is_Valid(pHead->nBlockUse) ... 

這是從Visual Studio來了,不加密+。你有一個記憶問題。


$ cat t.cpp 
// g++ -I/usr/local/include t.cpp -o t.exe -lcryptopp -lpthread 

#include <cryptopp/sha.h> 
#include <cryptopp/filters.h> 
#include <cryptopp/hex.h> 

#include <iostream> 
#include <string> 

using namespace CryptoPP; 
using namespace std; 

int main() 
{ 
    SHA1 sha1; 
    string source = "Hello"; //This will be randomly generated somehow 
    string hash = ""; 
    StringSource(source, true, new HashFilter(sha1, new HexEncoder(new StringSink(hash)))); 

    cout << hash << endl; 

    return 0; 
} 

運行正常對我來說:

$ ./t.exe 
F7FF9E8B7BB2E09B70935A5D785E0CC5D9D0ABF0 
$ 

我懷疑有一些信息丟失 - 就像你與你的字符串,你所提到的整數做什麼(但沒有告訴我們)。

您需要向我們展示您正在嘗試運行的代碼。


我做了新的項目,編譯cryptolibs,連接它們(我認爲,正確的,因爲沒有鏈接錯誤)。

您可能還會驗證您的項目是否按預期爲Visual Studio設置。爲此,請參閱Compiling and Integrating Crypto++ into the Microsoft Visual C++ Environment

+0

哇,謝謝你!有用) –