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

大佬们,解决一下我的疑问吧!!!!!
15793 次点击
所在节点    问与答
134 条回复
felixcode
2020-12-24 20:11:45 +08:00
你用 amd 算的,他用 intel 算的,当然不一样了。
Bigglesworth
2020-12-24 20:12:04 +08:00
@imdong #25 哈哈哈,最后没想到,这是 oppo 被黑的最惨的一次
efaun
2020-12-24 20:15:09 +08:00
开除开除
Elethom
2020-12-24 20:39:00 +08:00
@lovecy
我也不知道什么情况。讲道理我还真第一次见会输出 32 进制的。
Goat121
2020-12-24 20:44:22 +08:00
不开除留着过年?
Actrace
2020-12-24 23:34:33 +08:00
面试的时候。
面试官:“md5 算法你会吗?”
同事 B:“没问题,!@#@#%!@##”

干活的时候。
同事 A:“算一下文件 md5 传过来”
同事 B:“没问题”

```PHP

md5($file_name);

```
xxbutoo
2020-12-25 00:18:37 +08:00
@Actrace 我凑 不带这么黑 php 的
nuk
2020-12-25 00:54:40 +08:00
快把 android 的开了吧,别的好歹能猜出是什么,这个根本都不知道是啥玩意,啥 32 进制啊,base32 都不是。
Rorysky
2020-12-25 01:59:21 +08:00
妈呀,这都是什么神仙
Lonely
2020-12-25 02:14:40 +08:00
ios 的干脆就是个 base64,而且解码后的长度也不对;你可以把 md5 的工具类跟安卓共享一下
ewBuyVmLZMZE
2020-12-25 02:56:57 +08:00
不就是算完之后 HEX 么?
dbpe
2020-12-25 09:28:11 +08:00
@felixcode 笑死我了......你们不同时间点算得也不同
SiuRayyy
2020-12-25 09:38:47 +08:00
@imdong 这是 oppo 被黑的最惨的一次
laoyur
2020-12-25 10:56:25 +08:00
都在喷 iOS,但好歹一眼能看出是 base64
安卓那个输出的又是什么鬼?

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

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

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

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

© 2021 V2EX