weixin_51011296 2021-12-15 17:04 采纳率: 100%
浏览 14
已结题

怎么计算磁盘扇区的哈希值并获取进度呢,已经做出来的检验后是错的

int getMD5_Disk()
{
OVERLAPPED over = { 0 };
over.Offset = 0;

char* data = new char[4 * 1024 * 1024 * 1024];
long int Data_Area = 4 * 1024 * 1024 * 1024;
unsigned char out[MD5_DIGEST_LENGTH];

HANDLE ihandle = CreateFile(TEXT("\\\\.\\C:"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (ihandle == INVALID_HANDLE_VALUE)
{
    cout << "句柄获取失败" << endl;
    CloseHandle(ihandle);
    return -1;
}

MD5_CTX ctx;
MD5_Init(&ctx);
DWORD readsize;
int i = 0;
while (ReadFile(ihandle, data, Data_Area, &readsize, &over) != 0)
{
    cout << i << " ";
    i++;
    MD5_Update(&ctx, (char*)data, readsize);
}
CloseHandle(ihandle);

MD5_Final(out, &ctx);
printHexStr(out, MD5_DIGEST_LENGTH);

delete[] data;

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月23日
    • 创建了问题 12月15日

    悬赏问题

    • ¥30 设计一个图形用户界面来控制你机械臂的运动
    • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
    • ¥15 RPG游戏架构设计和开发方法
    • ¥15 python 计算股权结构
    • ¥30 为什么会失败呢,该如何调整
    • ¥15 前端返回pdf时不显示内容
    • ¥50 如何在不能联网影子模式下的电脑解决usb锁
    • ¥20 服务器redhat5.8网络问题
    • ¥15 如何利用c++ MFC绘制复杂网络多层图
    • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变