一个关于我的同事计算 md5 的问题!

2020-12-24 09:42:53 +08:00
 BenchWidth
由于项目的设计需要项目中资源上传的时候都是需要上传 md5 来校验文件,我是负责的网页前端与 java 后端部分的。

昨天,ios 端的兄弟说有时候文件上传之后有时候地址是不能访问的(公司用的阿里云 oss )。我去看了一些发现了文件名有许多的奇奇怪怪的字符,被后台替换为空格了。我问了一些 ios 的兄弟他说的是算出来的 md5 值。我也问了一下安卓的兄弟,发现我们三端计算出来的文件 md5 都有自己的格式。(我自己写的前端和后端的计算方法得出的都是一样的 md5 )

前端,java 后台:2cf8510722f63a433865b7b244738b22
安卓:fuo0n0ga3rfs9qo5dd5qdmq8c
ios:Z L6tJUcklneku8zMPoqcw==

前端和 java 后台是我自己写所以怎么算都是一样的。主要是安卓和 iso 他们和我说编程语言不一样算出来的就是不一样的,而且 ios 他说没法算出我这种 md5 数值。

我想的是 md5 难道不都是通过获取文件的二进制流再进行一系列的算法得出的一个固定的值嘛,难道说在不同的地方读取出来的文件二进制流不一样?或者说是使用的算法不一样?还是说只是他们没有找到方法而已?还是说是我自己算错了。

大佬们,解决一下我的疑问吧!!!!!
15739 次点击
所在节点    问与答
134 条回复
cornetCat
2020-12-24 11:36:53 +08:00
建议开除,不然后续的坑你会吐血
BenchWidth
2020-12-24 11:40:03 +08:00
@gamexg 我刚看了看他的代码似乎把 16 进制转换成了 32 进,我重新找了 个文件。
我算出来是 bfc918bf80386fa7f2784807c07860d8
安卓算出来是 5vp4cbv01odujv4u280v07go6o
他说他用的是安卓 sdk 的方法来获取的,不知道是不是被自动转成 32 进制了
mxT52CRuqR6o5
2020-12-24 11:44:01 +08:00
有啥好疑问的,那两位水平不行
你看看他们是培训机构出来的还是科班出来的
BenchWidth
2020-12-24 11:47:12 +08:00
@louiswang002 好的
hatebugs
2020-12-24 11:51:58 +08:00
这个水平,,
vanxy
2020-12-24 11:53:09 +08:00
@BenchWidth #42 Android 的看起来就不像 md5 呀

搜索一下, 复制粘贴,5 分钟搞定:
https://juejin.cn/post/6844903444810055687
icyalala
2020-12-24 11:55:42 +08:00
@Woood

这 iOS 童鞋编译不报错了,涨红的脸色渐渐复了原,他人便又问道,“童鞋,你当真认会做 iOS ?” 他看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连 md5 都算不对呢?”他立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是 block runtime 之类,一些不懂了。在这时候,众人也都哄笑起来:工位前后充满了快活的空气。
FreeEx
2020-12-24 11:58:11 +08:00
我的天,建议面试官辞职谢罪
gefranks
2020-12-24 11:59:51 +08:00
算不对还可以忍, 但是说编程语言不一样算出来的就是不一样的,建议开除。
php01
2020-12-24 12:08:36 +08:00
这水平能找到工作,是不是应该反省一下公司的招聘录用流程?
superrichman
2020-12-24 12:17:04 +08:00
安卓的可能是把 hmacmd5 当成 md5 用了
Jackeriss
2020-12-24 12:20:32 +08:00
今日最佳
zszhere
2020-12-24 12:32:23 +08:00
先统一 tohex()把格式整一致了再说
如果还不一致就找个小文件做二进制的 bindiff
zqx
2020-12-24 12:33:18 +08:00
md5 是一个给资源生成唯一标识的规则,不是具体算法吧,指定同一种算法,不同平台的结果肯定是一样的
dogfood
2020-12-24 12:44:26 +08:00
牛逼 class
rigortek
2020-12-24 12:45:11 +08:00
md5 都能有争议,还和语言有关?醉了!
命令行一条 md5sum 结果就是三端看齐的标准
iOS 绝对水货一个
sampeng
2020-12-24 12:52:41 +08:00
今日最佳
我说这样的留着过年?
richChou
2020-12-24 13:06:19 +08:00
想起之前公司有个开发跟我说不同语言 Base64 Encode 之后的值不一样。
360511404
2020-12-24 13:17:55 +08:00
单看 iOS
是不是跟你的结果一致,这个重要吗
能得出这样的 md5 值的 iOS,你还留着过年吗
他自己都不看一下自己的值,他不知道怎么看都铁定不是 md5 吗
ztxcccc
2020-12-24 13:23:21 +08:00
@zqx md5 就是算法名,还有 md4 之类的,你也要多学习

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX