我是Crypto ++的新手,我需要对字符串和整数进行一些操作(调用哈希函数和MAC函数)
我看见了这个
Using Crypto++ to generate random hashes with SHA1并尝试遵循它。
我创建了一个新项目,编译了cryptolibs,并链接了它们(我认为是正确的,因为没有链接器错误)。它构建的很好,但是从main返回时我有这个:
我就像在评论中的帖子中一样,所以我不明白为什么会这样。
代码(包括地址,因为我真的很懒于在链接器上建立良好的链接):
#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))));
}
最佳答案
DEBUG ASSERTION FAILED! ...blablabla/dbgdel.cpp Line 52
Expression: _Block_Type_Is_Valid(pHead->nBlockUse) ...
这来自Visual Studio,而不是Crypto ++。您有记忆问题。
$ 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
$
我怀疑缺少某些信息-例如您对提到的字符串和整数所做的操作(但没有显示给我们)。
您需要向我们展示您要运行的代码。
您还可能会验证您的项目是否按Visual Studio的预期进行设置。为此,请参见Compiling and Integrating Crypto++ into the Microsoft Visual C++ Environment。
关于c++ - 调试断言失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21261764/