同一个文件在windows和linux下计算md5哈希不一致的原因及解决方法

 更新时间:2017年03月16日 10:09:53   投稿:jingxian  
下面小编就为大家带来一篇同一个文件在windows和linux下计算md5哈希不一致的原因及解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近项目需要,需要对客户传过来的文件进行MD5校验,在实现的过程中前前后后遇到了若干问题,在这里总结一下。

md5的计算采用openssl实现,具体代码网上很多,这里不再赘述。需要注意的问题

1 读取文件内容时,文件打开方式要用二进制方式(rb),因为用户文件有可能是linux格式,如果用文本方式打开,可能会改变原始的内容,造成计算不准。

2 结果检验。windows可以随便下载一个md5计算工具,网上很多,我用的是HashMyFiles。linux下面,md5sum 文件名 即可。

还有一个隐藏得问题需要注意,我们在这里好一阵郁闷。

程序编写完毕,再windows测试都通过了,把文件上传到linux,再运行程序,居然算出来的md5哈希和windows不一样。

经过一阵跟踪、断点、打印发现,文件上传到linux后,大小居然发生了变化,原来问题出在ftp,ftp上传得过程中采用了文本模式,会把文件中换行回车替换为换行。于是重新用二进制模式上传,计算结果一致,问题解决。

总结一下:文件打开读取要用二进制方式,文件传输也要用二进制方式。

以上这篇同一个文件在windows和linux下计算md5哈希不一致的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux Shell脚本实现检测tomcat

    Linux Shell脚本实现检测tomcat

    这篇文章主要介绍了Linux Shell脚本实现检测tomcat的方法,推荐给小伙伴们,需要的朋友可以参考下
    2015-03-03
  • shell脚本的流程控制语句的实现

    shell脚本的流程控制语句的实现

    本文主要介绍了shell脚本的流程控制语句的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Shell脚本中单引号(‘)和双引号(“)的使用区别

    Shell脚本中单引号(‘)和双引号(“)的使用区别

    这篇文章主要介绍了Shell脚本中单引号(‘)和双引号(“)的使用区别,主要探讨了变量在单引号和双引号中的不同,需要的朋友可以参考下
    2014-06-06
  • Shell获取字符串长度的多种方法总结

    Shell获取字符串长度的多种方法总结

    这篇文章主要给大家总结分享了关于Shell获取字符串长度的多种方法,包括了利用${#str}、利用awk的length方法、利用awk的NF项、利用wc的-L参数、利用expr的length方法以及利用expr的$str : ".*"技巧来实现方法示例,需要的朋友可以参考下。
    2017-08-08
  • Linux 压缩某个文件夹的实现方法

    Linux 压缩某个文件夹的实现方法

    这篇文章主要介绍了Linux 压缩某个文件夹的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
    2017-10-10
  • linux 驱动之Kconfig文件和Makefile文件实例

    linux 驱动之Kconfig文件和Makefile文件实例

    这篇文章主要介绍了linux 驱动之Kconfig文件和Makefile文件实例的相关资料,需要的朋友可以参考下
    2017-01-01
  • linux下shell脚本备份文件的方法实现

    linux下shell脚本备份文件的方法实现

    本文主要介绍了linux下shell脚本备份文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • shell监控脚本实例—监控mysql主从复制

    shell监控脚本实例—监控mysql主从复制

    分享一例shell脚本,用于监测mysql数据库的主从复制,有需要的朋友不妨参考学习下
    2013-11-11
  • hive-shell批量命令执行脚本的实现方法

    hive-shell批量命令执行脚本的实现方法

    今天小编就为大家分享一篇hive-shell批量命令执行脚本的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux shell将变量拼接到命令中

    linux shell将变量拼接到命令中

    本文主要介绍了linux shell将变量拼接到命令中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论