如何保证下载文件的完整性(网易面试题)

该问题很简单吧,都会吧?不会吧不会吧,你还不会?

以Android程序进行更新升级为例,一般情况下,APP启动都会请求服务端:是否有新版本APK?

如果有升级需要,那么服务端可能会返回如下数据:

arduino 复制代码
{'msg':'更新日志','url':'下载地址','version':'版本号',......}

那么此时我们通过服务端响应的json数据中新版本APK的URL地址对APK文件进行下载,然而在互联网中进行文件传输过程中,可能由于各种原因导致文件的不完整。此时我们程序中若无法进行APK文件完整性的判断,直接请求安装此APK文件,很显然会显示:无法安装。

为了解决这个文件,服务端的响应数据中需要增加文件校验码( MD5、SHA1、CRC32)。以MD5为例,服务端在响应的数据中新增了:md5字段。

arduino 复制代码
{'msg':'更新日志','url':'下载地址','version':'版本号','md5':'xxx',......}

每个文件都可以用 MD5 验证程序算出一个固定的 MD5 码。当客户端下载了文件后,可以计算所下载的文件的 MD5 码,和服务端响应的 MD5 码比较。如果计算出来的和服务端响应的不匹配,那么下载的APK文件不完整,或是被别人动过手脚。

因此可以通过文件校验的方式保证下载文件的完整性。

答案虽短(和你一样???)但很精确(短小精悍???)开玩笑别当真
今日分享到此结束,对你有帮助的话,点个赞再走呗,每日一个面试小技巧
关注公众号:Android老皮

解锁 《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版

内容如下:

1.Android车载应用开发系统学习指南(附项目实战)
2.Android Framework学习指南,助力成为系统级开发高手
3.2023最新Android中高级面试题汇总+解析,告别零offer
4.企业级Android音视频开发学习路线+项目实战(附源码)
5.Android Jetpack从入门到精通,构建高质量UI界面
6.Flutter技术解析与实战,跨平台首要之选
7.Kotlin从入门到实战,全方面提升架构基础
8.高级Android插件化与组件化(含实战教程和源码)
9.Android 性能优化实战+360°全方面性能调优
10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 🤔

相关推荐
每天进步一点点km11 小时前
自用-牛客网-华为机试编程模拟题1-python
华为od·华为·面试
拥小抱12 小时前
Compose 知识点
android
文章永久免费只为良心12 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_868913 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
Patrick在香港15 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
frjc16 小时前
分布式服务拆分实战指南:从底层逻辑到面试话术
微服务·面试·职场和发展
考研保研资料分享16 小时前
2025生科保研北大直博:英语摘要、科研PPT与赶场复盘
面试
海雅达手持终端PDA17 小时前
工业手持终端的“去手机化”演进:看海雅达如何以“同轴扫摄”终结工程妥协,重塑工业PDA新范式
android·物联网·智能手机·硬件工程·能源·制造·iot
香蕉大香蕉(06敬畏市场)17 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
ShineWinsu17 小时前
对于Qt:QCheckBox常见属性的详细解析
c++·qt·面试·笔试·gui·qcheckbox·多选框