c++ - 使用 Poco 库计算文件部分的 MD5

标签 c++ poco-libraries

在为文件的一部分获取正确的 md5 哈希时遇到问题,我的代码如下所示。每当我阅读整个文件(没有查找和阅读)时,它都算得上很好。哪里出错了?

long length = (offset_end - offset_start) + 1;
char* buffer = new char[length];
std::ifstream ifs(downloadFile->url_hdd.c_str(), std::ios::binary);
ifs.seekg(offset_start, std::ios::beg);
ifs.read(buffer, length);
ifs.close();
std::stringstream stringStream(buffer);

Poco::MD5Engine md5;
Poco::DigestOutputStream outstr(md5);
outstr << stringStream.str();
outstr.flush(); //to pass everything to the digest engine
const Poco::DigestEngine::Digest& digest = md5.digest();
std::string md5string = Poco::DigestEngine::digestToHex(digest);

最佳答案

这似乎有效。

unsigned long long length = (downloadChunk->offset_end - downloadChunk->offset_start) + 1;
char *data = new char[length];
fseek(file, downloadChunk->offset_start, SEEK_SET);
fread(data, 1, length, file);
                                        
fclose(file);
                                        
std::istringstream iss(std::string(data, length));

delete []data;

关于c++ - 使用 Poco 库计算文件部分的 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765317/

相关文章:

c++ - 在 C++ 中干净地复制基类或子类的实例?

c++ - std::hash 值在 char* 值上而不是在内存地址上?

c++ - 对齐指针

c++ - C++ 中的图像模糊。矩阵拷贝的问题

boost-asio - boost::asio 是否等同于 Poco::Net?

c++ - 如何在c4droid中输入ctrl+z

c++ - 我可以使用 Poco 从内存缓冲区创建多文件 zip 存档吗?

c++ - 将 POCO 静态库嵌入另一个

c++ - 在 C++ 应用程序/库中,pimpl 在哪里使用?有什么例子吗?

c++ - UDP 无法分配请求的地址