同⼀个⽂件在windows和linux下计算md5哈希不⼀致的原
因及解决⽅法
最近项⽬需要,需要对客户传过来的⽂件进⾏MD5校验,在实现的过程中前前后后遇到了若⼲问题,在这⾥总结⼀下。
md5的计算采⽤openssl实现,具体代码⽹上很多,这⾥不再赘述。需要注意的问题
1 读取⽂件内容时,⽂件打开⽅式要⽤⼆进制⽅式(rb),因为⽤户⽂件有可能是linux格式,如果⽤⽂本⽅式打开,可能会改变原始的内容,造成计算不准。
2 结果检验。windows可以随便下载⼀个md5计算⼯具,⽹上很多,我⽤的是HashMyFiles。linux下⾯,md5sum ⽂件名即可。
还有⼀个隐藏得问题需要注意,我们在这⾥好⼀阵郁闷。
程序编写完毕,再windows测试都通过了,把⽂件上传到linux,再运⾏程序,居然算出来的md5哈希和windows不⼀样。linux怎么读取windows文件
经过⼀阵跟踪、断点、打印发现,⽂件上传到linux后,⼤⼩居然发⽣了变化,原来问题出在ftp,ftp上传得过程中采⽤了⽂本模式,会把⽂件中换⾏回车替换为换⾏。于是重新⽤⼆进制模式上传,计算结果⼀致,问题解决。
总结⼀下:⽂件打开读取要⽤⼆进制⽅式,⽂件传输也要⽤⼆进制⽅式。
以上这篇同⼀个⽂件在windows和linux下计算md5哈希不⼀致的原因及解决⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论