1
baijiahei 2020-12-24 09:47:29 +08:00
同一文件 md5 值相同
ios 端的看起来像 base64 后的 然后还有个空格 可能+号 后台接收的时候给过滤掉了 说不好 但是 ios 端的肯定是不对的 |
2
binbinyouliiii 2020-12-24 09:47:37 +08:00
你让他拿个简单字符算一下对比一下不就完了
|
3
ThirdFlame 2020-12-24 09:53:30 +08:00
md5 值 是 16*8=128bit
前端和 java 显示的是 hex 格式显示的。 ios 貌似是 base64 编码后显示的(不过也和 前端和 java 算的不一样) 同一个文件计算出来的 md 值( 128bit )是相同的,这是毋庸置疑的。 |
4
SjwNo1 2020-12-24 09:54:04 +08:00
啊哈 不同的编程语言 md5 算法不一样吗 坐等楼下解答
|
5
louiswang002 2020-12-24 09:55:07 +08:00 via iPhone
可能 iOS 端用了阿里云的工具类算出来的 md5,那个工具类里面有个函数,是 md5 之后 base64,这个值可以用于阿里云 oss 校验,可以让 iOS 的同事 review 代码
|
6
maro 2020-12-24 09:57:49 +08:00 11
一个 32 位 一个 24 位 一个干脆是 base64
|
7
whileFalse 2020-12-24 09:58:27 +08:00 12
都按照 linux 下的 md5sum 对齐,谁算出来和 md5sum 不一致就打回去重写
|
8
paullee 2020-12-24 10:03:48 +08:00 1
啊,你们缺少有话语权的人,这玩意儿能算出 3 个版本,那你们其他业务的坑恐怕只多不少。建议参照 7 楼的建议。
|
9
Citrus 2020-12-24 10:04:14 +08:00 70
安卓和 iso 他们和我说编程语言不一样算出来的就是不一样的
建议把说这话的人开掉。 |
10
msg7086 2020-12-24 10:08:38 +08:00
Z+L6tJUcklneku8zMPoqcw==
对应的 hex 是 67e2fab4951c9259de92ef3330fa2a73 和你算出来的不一样。 至于谁对谁错,各家 hash 工具解忧愁。 |
11
f6x 2020-12-24 10:10:56 +08:00
@whileFalse 你歧视其他操作系统. 命名 mac 和 win 下也有 md5sum
|
12
longaiwp 2020-12-24 10:11:57 +08:00 1
你管它哪个对哪个错,就按照 Linux 下的 md5sum 来,谁不一样就谁回去研究重写。
|
13
SjwNo1 2020-12-24 10:12:59 +08:00 5
重点关照下这位 ios 同学,胡言乱语
|
14
kx5d62Jn1J9MjoXP 2020-12-24 10:14:08 +08:00
这两个客户端都很优秀啊, 都是自己实现 md5 算法
一般菜鸟都是网上找一段代码复制粘贴一下 |
16
longaiwp 2020-12-24 10:19:17 +08:00
另外你们这位做 iOS 的人,估计技术不过关,建议要他多学习。
|
17
keepeye 2020-12-24 10:30:08 +08:00
你到网上找个 swift 的标准 MD5 算法扔给他。我估计他连 md5 是什么都不知道
|
18
BenchWidth OP @ssynhtn 他就是网上找的计算 md5 的方式。。也不晓得哪儿找的(这就很头大了)
|
19
BenchWidth OP @keepeye 我扔了一个 md5 标准算法,他说什么 ios 不能根据文件夹获取文件啥的,就是似乎拿不到文件的二进制流。。我也不懂 ISO 就没说什么了。
|
20
BenchWidth OP @Citrus 好残忍,哈哈哈
|
21
keepeye 2020-12-24 10:37:44 +08:00
@BenchWidth 怎么可能无法读取呢?
|
22
BenchWidth OP @louiswang002 他在 csdn 找的代码只有 10 几行。。。
|
23
0x663 2020-12-24 10:44:16 +08:00
哈哈哈哈哈,没想到还会有这种问题
|
24
misaka19000 2020-12-24 10:44:20 +08:00
四五年前有幸和做 iOS 的人打过交道,那些人的水平真是菜
|
25
imdong 2020-12-24 10:45:38 +08:00 7
让我想起之前一个同事,让他做一个上传文件去重的功能,一个星期过去了,没动静,过去一问,搞不定,不知道咋弄...
我说用 md5 啊,你把上传的文件 md5 存数据库,每次上传检查数据库有么有记录嘛。 他说好,然后又一个星期过去了,我问咋样了...他说每次上传的文件 md5 都不一样。 我一看代码,呵: ```PHP md5($file_name); ``` 对不懂 PHP 的朋友们一个提示 `md5 ( string $str [, bool $raw_output = false ] ) : string` 我...后来他试用期没过,听说去了 OPPO,唉... |
26
Rwing 2020-12-24 10:46:10 +08:00
md5 是标准算法。。。。各语言肯定是一样的,如果不一样,说明有人错了。。。。
|
27
BenchWidth OP @keepeye 不知道,,我也很纳闷,我现在特别的懵逼。。。。毕竟我没写过 iOS 。昨天他解释的就是说 ISO 与安卓读取文件的方式不一样,什么什么文件拿不到之类的。我问他能到文件的二进制流嘛,他就说 iOS 啥的(不懂不懂听不懂!)
|
28
zhangxiaoming 2020-12-24 10:55:10 +08:00
跟楼主一模一样的情况,最近一个月多起来的,软件批量搞的根本防不住。当看不见...
|
29
zhangxiaoming 2020-12-24 10:55:31 +08:00
@zhangxiaoming
不好意思回错帖子了... |
30
RayJiang9 2020-12-24 10:57:04 +08:00
如果 iOS 用的 Swift 的话,直接引入这个库,内置了多种算法 [CryptoSwift]( https://github.com/krzyzanowskim/CryptoSwift)
不过还是建议开除 iOS |
31
BenchWidth OP @RayJiang9 哈哈哈哈,你们好残忍
|
32
cht 2020-12-24 11:04:19 +08:00
|
33
YouLMAO 2020-12-24 11:07:21 +08:00 via Android
老板发话了,算出正确 md5 的年终奖 10 个比特币,算错了倒扣 2 个,他们工资高让他们算
|
34
Woood 2020-12-24 11:12:01 +08:00
他就说 iOS 啥的(不懂不懂听不懂!)
莫名有看孔乙己的感觉 |
35
oneisall8955 2020-12-24 11:12:23 +08:00
用脚想都知道能算一致的
|
36
yaocai321 2020-12-24 11:18:37 +08:00
建议看了下 md5 的原理, 然后手写下, 花不了一天的时间
|
37
gamexg 2020-12-24 11:22:34 +08:00
Java 的是 hex 格式,ios 的是 base64 格式,
但是谁能介绍下,安卓的是什么格式? 32 进制?? |
38
des 2020-12-24 11:32:42 +08:00
建议开除,骗鬼呢
|
39
louiswang002 2020-12-24 11:32:44 +08:00 via iPhone
@BenchWidth 告诉他用 NSData 读取文件,然后再用这个对象 MD5,再不行让他去 aliyunoss 里面找 OSSUtil 这个工具类,找 MD5 的方法
|
40
way2explore2 2020-12-24 11:34:21 +08:00
@gamexg 同好奇
|
41
cornetCat 2020-12-24 11:36:53 +08:00
建议开除,不然后续的坑你会吐血
|
42
BenchWidth OP @gamexg 我刚看了看他的代码似乎把 16 进制转换成了 32 进,我重新找了 个文件。
我算出来是 bfc918bf80386fa7f2784807c07860d8 安卓算出来是 5vp4cbv01odujv4u280v07go6o 他说他用的是安卓 sdk 的方法来获取的,不知道是不是被自动转成 32 进制了 |
43
mxT52CRuqR6o5 2020-12-24 11:44:01 +08:00
有啥好疑问的,那两位水平不行
你看看他们是培训机构出来的还是科班出来的 |
44
BenchWidth OP @louiswang002 好的
|
45
hatebugs 2020-12-24 11:51:58 +08:00 via Android
这个水平,,
|
46
vanxy 2020-12-24 11:53:09 +08:00
|
47
icyalala 2020-12-24 11:55:42 +08:00 13
@Woood
这 iOS 童鞋编译不报错了,涨红的脸色渐渐复了原,他人便又问道,“童鞋,你当真认会做 iOS ?” 他看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连 md5 都算不对呢?”他立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是 block runtime 之类,一些不懂了。在这时候,众人也都哄笑起来:工位前后充满了快活的空气。 |
48
FreeEx 2020-12-24 11:58:11 +08:00 via iPhone
我的天,建议面试官辞职谢罪
|
49
gefranks 2020-12-24 11:59:51 +08:00
算不对还可以忍, 但是说编程语言不一样算出来的就是不一样的,建议开除。
|
50
php01 2020-12-24 12:08:36 +08:00
这水平能找到工作,是不是应该反省一下公司的招聘录用流程?
|
51
superrichman 2020-12-24 12:17:04 +08:00 via iPhone
安卓的可能是把 hmacmd5 当成 md5 用了
|
52
Jackeriss 2020-12-24 12:20:32 +08:00 via iPhone
今日最佳
|
53
zszhere 2020-12-24 12:32:23 +08:00 via iPhone
先统一 tohex()把格式整一致了再说
如果还不一致就找个小文件做二进制的 bindiff |
54
zqx 2020-12-24 12:33:18 +08:00 via Android
md5 是一个给资源生成唯一标识的规则,不是具体算法吧,指定同一种算法,不同平台的结果肯定是一样的
|
55
dogfood 2020-12-24 12:44:26 +08:00
牛逼 class
|
56
rigortek 2020-12-24 12:45:11 +08:00 via iPhone
md5 都能有争议,还和语言有关?醉了!
命令行一条 md5sum 结果就是三端看齐的标准 iOS 绝对水货一个 |
57
sampeng 2020-12-24 12:52:41 +08:00 via iPhone
今日最佳
我说这样的留着过年? |
58
richChou 2020-12-24 13:06:19 +08:00
想起之前公司有个开发跟我说不同语言 Base64 Encode 之后的值不一样。
|
59
360511404 2020-12-24 13:17:55 +08:00
单看 iOS
是不是跟你的结果一致,这个重要吗 能得出这样的 md5 值的 iOS,你还留着过年吗 他自己都不看一下自己的值,他不知道怎么看都铁定不是 md5 吗 |
61
1s1s 2020-12-24 13:38:03 +08:00
不敢看不敢看
|
62
djs 2020-12-24 13:39:04 +08:00
直接好家伙,这辆端开发有毒
|
63
glennv2ex 2020-12-24 13:41:02 +08:00
前端,java 后台看起来没问题 安卓的 25 位肯定不对 ios 的更离谱了
|
64
glennv2ex 2020-12-24 13:42:13 +08:00
欺负你这个老后端😄
|
65
BenchWidth OP @glennv2ex 哭了哭了,太难了
|
66
guibin1989 2020-12-24 13:45:22 +08:00
iOS 程序员风评被害,建议开除。
|
67
longaiwp 2020-12-24 13:52:11 +08:00
@richChou 确实会有,哪怕都是 Jawa,Android 和 Jawa 原生的 Base64 也会有不同,内部的规则问题。但是这本质上不是哪个语言不能得出哪个样子的东西,只要你指定要哪样的,一定能搞出来的。
|
68
sss495088732 2020-12-24 13:55:30 +08:00
0.0 不用标准库自己写,去百度 CV?
|
69
SjwNo1 2020-12-24 13:55:45 +08:00
贵司的客户端能用吗哈哈
|
70
heliotrope 2020-12-24 14:04:27 +08:00
@richChou 确实会不一样呀 字符编码 填充方式 都有可能不一样
|
71
zjddp 2020-12-24 14:13:32 +08:00
提问:这三人至少有几个人有问题
|
72
huayumo 2020-12-24 14:16:59 +08:00
哈哈哈,ios 的要笑死了
|
73
local 2020-12-24 14:25:55 +08:00
这不至少 2 有问题吗
|
74
FallenTy 2020-12-24 14:27:50 +08:00
建议换个 ios 。
|
75
local 2020-12-24 14:31:04 +08:00
iOS 的看格式应该是 md5 后,又 base64 编码的结果
|
76
sarices 2020-12-24 14:32:08 +08:00
md5 不是一般都是把结果生成 32 位十六进制数字吗,ios 和安卓是什么鬼算法
|
77
dddz97 2020-12-24 14:46:38 +08:00
说今日最佳的,我觉得是这周最佳
|
78
pushback 2020-12-24 14:49:51 +08:00
这两端的年轻人不讲武德
|
79
xloger 2020-12-24 14:54:12 +08:00
Android 的你建议他用 Guava 算了。之前项目里是拷网上的代码有 OOM 问题,然后我自己去搜了下,发现大多中文资料不太靠谱,想用 NIO 结果遇到了一些问题,试来试去最后上 Guava 了。
参考资料:(我的参考顺序) <http://blog.atomicer.cn/2017/05/16/%E4%BD%BF%E7%94%A8nio%E7%9A%84%E5%86%85%E5%AD%98%E6%98%A0%E5%B0%84%E8%AE%A1%E7%AE%97%E8%B6%85%E5%A4%A7%E6%96%87%E4%BB%B6%E7%9A%84MD5/> <https://www.cnkirito.moe/file-io-best-practise/> <https://www.jianshu.com/p/f81073adc67d> <https://stackoverflow.com/questions/304268/getting-a-files-md5-checksum-in-java> |
80
ReysC 2020-12-24 15:01:56 +08:00
安卓和 IOS 的应该好好查查文档,并且贴个 MD5 的正则验证:
^([a-z0-9]{32})$ 来自 https://regexlib.com/REDetails.aspx?regexp_id=698 说真的,看到 o 和 u 的时候,已经不知道是啥东西了。HEX 怎么能超过 F 附赠: https://en.wikipedia.org/wiki/MD5 |
81
locoz 2020-12-24 15:09:16 +08:00 via Android
“主要是安卓和 ios 他们和我说编程语言不一样算出来的就是不一样的,而且 ios 他说没法算出我这种 md5 数值。”
很真实哈哈哈哈哈,见过好几个做客户端开发的都有类似情况,主要可能是理解不了,因为和做客户端的那些东西不是一个逻辑。 |
82
Elethom 2020-12-24 15:20:11 +08:00 2
我来唱个反调,Android 和 iOS 端提供的 md5 都真的是 md5,不过 Android 是 32 进制的,iOS 的是 base64 encode 过的 raw data 。
但是依然建议: - 开除这两位,不会转换标准 hex 字串留着过年? - 开除所有楼上说不是 md5 的,真的太鸡巴菜了 |
83
JDog 2020-12-24 15:20:16 +08:00
我曾经一位 iOS 开发同事......
我: “传参比较大,放 body 里吧” 研究了半天以后.... 同事: “iOS 这边好像没法把参数放 body 里,就 URL 传参吧” 我特么惊了,敢情 OC 实现的 http 协议没 body |
84
a719031256 2020-12-24 15:23:18 +08:00
把 ios 开发打一顿就对了,这明显是搞事嘛
|
85
Elethom 2020-12-24 15:26:08 +08:00 via iPhone
@locoz
iOS 自己的 crypto 库出来就是 raw data,直接输出字串就是 encode 过的,和语言没关系,和输出格式有关系。当然不会输出 hex 字串就是水平有问题,和「和做客户端的那些东西不是一个逻辑」没关系。 |
86
liman 2020-12-24 15:26:58 +08:00
牛逼!耳机可完全被认为了
|
89
CatTom 2020-12-24 15:52:35 +08:00
亲,这边建议您先去暴打一顿当初的面试官哟~
|
90
zpf124 2020-12-24 16:04:37 +08:00
@zqx hash 哈希摘要算法,是一个笼统的算法规则,而 md5,sha1 sha256 都是具体的哈希算法实现,是已经规定好了具体算法思路的,不论什么平台什么工具算出来的 md5 值都应该是一样的。
|
91
zckevin 2020-12-24 16:08:06 +08:00
啊这
|
92
fanjianhang 2020-12-24 16:10:25 +08:00
好家伙颠覆了
|
94
shawnsh 2020-12-24 16:11:46 +08:00 via Android
水的一比,那大家换个 sha3 来校验吧,狗头
|
96
BenchWidth OP @xloger 好的,谢谢大佬!我发给他看看
|
97
devcat 2020-12-24 16:26:33 +08:00
巧了,我也遇到同样的问题,就在前几天
|
98
BenchWidth OP @lovecy 刚刚找到问题了,文件比较小的他计算出来的值转换为 16 进制刚好是可以和我的 md5 对上。大文件他计算出来的就有问题了,
|
99
JKeita 2020-12-24 16:42:29 +08:00
ios 那个是 MD5 ?你在搞笑?
|
100
JKeita 2020-12-24 16:43:14 +08:00
MD5 是规范好吧,不同语言算出来的都应该一样。
|