应使用std::ifstream以std::ios::binary模式分块读取文件(如8kb),配合openssl的md5_init/update/final三步流式计算md5,避免文本模式换行符转换、mmap跨平台问题及内存溢出。

用 std::ifstream 读取文件并计算 MD5,别直接 mmap 或 fopen
MD5 计算依赖完整字节流,必须按二进制模式读取,否则换行符(
→
)会被悄悄转换,导致哈希值错乱。C++ 标准库不带 MD5,得靠 OpenSSL、Boost 或手写实现;OpenSSL 最常用也最稳。
常见错误是用 std::ifstream 默认文本模式打开,或用 std::getline 逐行读——这会丢掉末尾换行、跳过空行、截断
