![]() | 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 ![]() 一个 32 位 一个 24 位 一个干脆是 base64 |
7 whileFalse 2020-12-24 09:58:27 +08:00 ![]() 都按照 linux 下的 md5sum 对齐,谁算出来和 md5sum 不一致就打回去重写 |
![]() | 8 paullee 2020-12-24 10:03:48 +08:00 ![]() 啊,你们缺少有话语权的人,这玩意儿能算出 3 个版本,那你们其他业务的坑恐怕只多不少。建议参照 7 楼的建议。 |
![]() | 9 Citrus 2020-12-24 10:04:14 +08:00 ![]() 安卓和 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 ![]() 你管它哪个对哪个错,就按照 Linux 下的 md5sum 来,谁不一样就谁回去研究重写。 |
![]() | 13 SjwNo1 2020-12-24 10:12:59 +08:00 ![]() 重点关照下这位 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 的方式。。也不晓得哪儿找的(这就很头大了) |
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 ![]() 让我想起之前一个同事,让他做一个上传文件去重的功能,一个星期过去了,没动静,过去一问,搞不定,不知道咋弄... 我说用 md5 啊,你把上传的文件 md5 存数据库,每次上传检查数据库有么有记录嘛。 他说好,然后又一个星期过去了,我问咋样了...他说每次上传的文件 md5 都不一样。 我一看代码,呵: ```PHP md5($file_name); ``` 对不懂 PHP 的朋友们一个提示 `md5 ( string $str [, bool $raw_output = false ] ) : string` 我...后来他试用期没过,听说去了 OPPO,唉... |
26 |
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 itechify PRO 用脚想都知道能算一致的 |
36 ClaudeCode 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 ![]() @Woood 这 iOS 童鞋编译不报错了,涨红的脸色渐渐复了原,他人便又问道,“童鞋,你当真认会做 iOS ?” 他看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连 md5 都算不对呢?”他立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是 block runtime 之类,一些不懂了。在这时候,众人也都哄笑起来:工位前后充满了快活的空气。 |
![]() | 48/span> FreeEx 2020-12-24 11:58:11 +08:00 via iPhone 我的天,建议面试官辞职谢罪 |
![]() | 49 gefranks 2020-12-24 11:59:51 +08:00 算不对还可以忍, 但是说编程语言不一样算出来的就是不一样的,建议开除。 |
![]() | 50 anteros 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 cocowind 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 ![]() 我来唱个反调,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 是规范好吧,不同语言算出来的都应该一样。 |