Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 加密++;验证大文件签名_C++_Crypto++ - Fatal编程技术网

C++ 加密++;验证大文件签名

C++ 加密++;验证大文件签名,c++,crypto++,C++,Crypto++,我使用此代码使用crypto++验证消息: CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(key); bool result = verifier.VerifyMessage( (const CryptoPP::byte*)message.data(), message.length(), (const CryptoPP::byte*)signature.data(), signature.le

我使用此代码使用crypto++验证消息:

CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(key);
bool result = verifier.VerifyMessage( (const CryptoPP::byte*)message.data(), message.length(), (const CryptoPP::byte*)signature.data(), signature.length() );
CryptoPP::ECDSA::验证器验证器(密钥);
bool result=verifier.VerifyMessage((const-CryptoPP::byte*)message.data(),message.length(),(const-CryptoPP::byte*)signature.data(),signature.length());
现在,我想验证我以前为文件创建的签名。这个文件相当大(GB),我不想将它一块加载到内存中(到消息变量)


crypto++有没有办法验证大文件的签名?

此代码满足我的需要:

 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::PublicKey key; key.Load(queue);
 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(key);

 CryptoPP::SignatureVerificationFilter verificationFilter(verifier, NULL, CryptoPP::SignatureVerificationFilter::SIGNATURE_AT_BEGIN);
 CryptoPP::FileSource fileSource( file, false, new CryptoPP::Redirector(verificationFilter));
 CryptoPP::StringSource signatureSource( (const CryptoPP::byte*)signature.data(), signature.length(), false, new CryptoPP::Redirector(verificationFilter));
 signatureSource.Pump(signature.length());
 fileSource.PumpAll();

 return verificationFilter.GetLastResult();
CryptoPP::ECDSA::公钥;密钥加载(队列);
CryptoPP::ECDSA::验证器验证器(密钥);
CryptoPP::SignatureReferenceFilter verificationFilter(验证器,NULL,CryptoPP::SignatureReferenceFilter::SIGNATURE\u在\u开始时);
CryptoPP::FileSource FileSource(file,false,新的CryptoPP::重定向器(verificationFilter));
CryptoPP::StringSource signatureSource((const CryptoPP::byte*)signature.data(),signature.length(),false,new CryptoPP::Redirector(verificationFilter));
signatureSource.Pump(signature.length());
fileSource.PumpAll();
返回verificationFilter.GetLastResult();

为什么不使用
sha256
md5
散列码来验证文件?我想对文件签名,这样就没有人可以修改它。因此,使用文件的散列码就可以了。如果您有文件
散列
代码,而某人只修改了文件的
,则文件的
散列
代码将更改。。。实际上,
散列
代码是文件的符号。相信我,不对称加密签名是我需要使用的方式。文件和签名来自不安全的环境。如果我只使用散列,攻击者只需提供修改后的文件和重新计算的散列即可。您是否尝试过为
FileSource
修改?