文件完整性确认 前些天问了一个问题下在又有一个问题在使用md5确认的过程中, 一段一段buf确认md5的值但是这样做能够保证整体的完整性吗如果不能:如果在文件传输完毕后 对整个文件取md5值,那么需要在系统内开一个很大的buffer这样有很大的问题哦希望指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 crc32??内存映射有没有具体的说明呢 如果每一段的Offset, length及hash一致的话,就可以保证文件的完整性。 楼主对md5太不了解了,“md5确认的过程中, 一段一段buf确认md5的值”这个只是md5的计算过程,最后得到的值才是整个文件的 md5 值,凭什么不能“保证整体的完整性”呢?正是因为可以这样分段计算,才用不着“开一个很大的buffer”。你可以用个比较小的文件,比如 10k 大小的试一试,按 1k 分段和 10k 一次性计算看看,结果一不一样。 如果每一段的Offset, length及hash一致的话,就可以保证文件的完整性。多谢DentistryDoctor(不在无聊中无奈,就在沉默中变态)如果这样我只需要:我的包里面只有总的长度, 现在要加上总的长度属性, 然后接收的时候判断length_before+offset与length_current是否相等.这样做保证了传输过程中不会有错误而且完整现在我还担心的是会不会有这样的情况发生;buffer我收到了, 但是我自己fwrite出错了这样文件也是坏了, 不知道我这样的担心有没有必要 to myy() 比如 10k 大小的试一试,按 1k 分段和 10k 一次性计算看看,结果一不一样。但是我每次加密的buffer数据不同啊比如下面这个文件a.txtaaaabbbbccccdddd我分成4段aaaabbbbccccdddd我对每段的加密不一样啊还有对aaaabbbbccccdddd的加密结果与前面的也不一样啊------------------可能没有理解你的意思可以详细说说吗 to 楼主:我不知道你用的是谁写的md5算法,rfc标准的 md5 算法用法类似下面这样: MD5_CTX context; unsigned char buffer[1024], digest[16]; //初始化 MD5Init (&context); //循环读取文件并计算 while (0!=(len = fread (buffer, 1, 1024, fp))) MD5Update (&context, buffer, len); //计算结束 MD5Final (&context, digest); ... //最后,digest 中就是 最终的 md5 ,即 fp 文件的 md5,要显示为hex字符还要转换下。 to myyopenssl的MD5(,,) 哦^_^我懂你的意思了, 谢谢哦你说的对不过现在我想通过内存映射来打开文件,库因为文件很大我想道理是一样的.多谢我现在在找内存映射的资料 网页加载MFC开发的activex控件出错 象QQ等软件中,一些控件都不是标准控件,难道都是自动做的吗?代码量太大了 can not add new member 导出类的问题(类中有容器) closesocket之后程序为什么会出错? 请ligeleng0和arryang(阿阳)进来解释一下 希望大家能帮个忙,我怎么样才能知道局域网内有谁在上QQ然后关闭或者提醒他! 虚心求教: 如何截获WIN2k登陆密码? opgl和vc++实现一个三维图形的旋转 缩放 平移! CRichEditCtl中如何实现弹出式菜单 DLL提供的接口函数GetValue()怎么用?
我的包里面只有总的长度, 现在要加上总的长度属性,
然后接收的时候判断length_before+offset与length_current是否相等.这样做保证了传输过程中不会有错误而且完整现在我还担心的是
会不会有这样的情况发生;buffer我收到了, 但是我自己fwrite出错了
这样文件也是坏了, 不知道我这样的担心有没有必要
比如 10k 大小的试一试,按 1k 分段和 10k 一次性计算看看,结果一不一样。但是我每次加密的buffer数据不同啊
比如下面这个文件
a.txt
aaaabbbbccccdddd我分成4段
aaaa
bbbb
cccc
dddd
我对每段的加密不一样啊还有对
aaaabbbbccccdddd的加密结果与前面的也不一样啊------------------
可能没有理解你的意思
可以详细说说吗
unsigned char buffer[1024], digest[16]; //初始化
MD5Init (&context); //循环读取文件并计算
while (0!=(len = fread (buffer, 1, 1024, fp)))
MD5Update (&context, buffer, len); //计算结束
MD5Final (&context, digest);
...
//最后,digest 中就是 最终的 md5 ,即 fp 文件的 md5,要显示为hex字符还要转换下。
openssl的MD5(,,) 哦^_^
我懂你的意思了, 谢谢哦
你说的对不过现在我想通过内存映射来打开文件,库因为文件很大
我想道理是一样的.
多谢我现在在找内存映射的资料